using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Serilog; namespace JiShe.CollectBus.Console { internal class Program { static void Main(string[] args) { try { Log.Logger = new LoggerConfiguration() .WriteTo.Console() .CreateLogger(); CreateHostBuilder(args).Build().Run(); } catch (Exception ex) { Log.Fatal(ex, "Application terminated unexpectedly"); } finally { Log.CloseAndFlush(); } } public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureAppConfiguration(ConfigureAppConfiguration) .ConfigureServices((hostContext, services) => { ConfigureServices(services, hostContext); }); private static void ConfigureAppConfiguration(HostBuilderContext hostContext, IConfigurationBuilder config) { var env = hostContext.HostingEnvironment; config.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true); config.AddEnvironmentVariables(); } private static void ConfigureServices(IServiceCollection services, HostBuilderContext hostContext) { var configuration = hostContext.Configuration; services.AddSerilog((context, lc) => { lc.ReadFrom.Configuration(configuration) .ReadFrom.Services(context); }); services.ServiceRegister() .ModuleRegister(configuration) .PluginServiceRegister(); services.AddTcp(configuration); //services.AddUdp(configuration); services.AddStackExchangeRedisCache(options => { options.Configuration = configuration["RedisCache:ConnectionString"]; options.InstanceName = configuration["RedisCache:InstanceName"]; }); } } }