public static YamsServiceConfiguration Load(string baseDirectory = null) { baseDirectory = string.IsNullOrEmpty(baseDirectory) ? ApplicationPath.CurrentDirectory : baseDirectory; var builder = new ConfigurationBuilder(); builder .SetBasePath(baseDirectory) .AddJsonFile("yams.config.json", false) .AddJsonFile("yams.secrets.json", true); var config = new YamsServiceConfiguration(); var configRoot = builder.Build(); configRoot.Bind(config); return(config); }
private static void Main(string[] args) { ServicePointManager.DefaultConnectionLimit = 10000; HostFactory.Run(host => { var configurationDirectory = ApplicationPath.CurrentDirectory; host.AddCommandLineDefinition("config", x => configurationDirectory = x); host.ApplyCommandLine(); var configuration = YamsServiceConfiguration.Load(configurationDirectory); var logger = new LoggerConfiguration() .WriteTo.RollingFile(Path.Combine(ApplicationPath.CurrentDirectory, "logs", "yams-{Date}.log")) .MinimumLevel.Is(LogEventLevel.Debug) .CreateLogger(); Trace.Listeners.Add(new SerilogTraceListener.SerilogTraceListener(logger)); host.Service <IYamsService>(service => { service.ConstructUsing(name => { var builder = new YamsConfigBuilder( configuration.ClusterId, configuration.InstanceUpdateDomain, configuration.InstanceUpdateDomain, configuration.ApplicationInstallDirectory); var yamsConfig = builder .SetCheckForUpdatesPeriodInSeconds(configuration.UpdatePeriodInSeconds) .SetApplicationRestartCount(configuration.RestartCount) .Build(); return(YamsServiceFactory.Create( yamsConfig, configuration.AzureStorageConnectionString, configuration.AzureStorageConnectionString)); }); service.WhenStarted(x => x.Start().Wait()); service.WhenStopped(x => x.Stop().Wait()); }); host.RunAsLocalSystem(); host.SetDescription("Yams Service Host"); host.SetDisplayName("Yams Service"); host.SetServiceName("Yams"); host.StartAutomatically(); }); }