Ejemplo n.º 1
0
        /// <summary>
        /// 主函数
        /// </summary>
        /// <param name="args">配置参数</param>
        public static void Main(string[] args)
        {
            //未捕获异常处理
            AppDomain.CurrentDomain.UnhandledException += UnhandledExceptionEventHandler;

            //启动参数配置项
            IConfigurationRoot commandConfig = new ConfigurationBuilder()
                                               .AddCommandLine(args)
                                               .Build();
            SystemType system     = commandConfig.GetValue <SystemType>("System");
            int        listenPort = commandConfig.GetValue <int>("ListenPort");

            //初始化日志
            List <string> tempArgs = args.ToList();

            tempArgs.Add($"LogName={system}");
            args = tempArgs.ToArray();
            List <ILoggerProvider> loggerProviders = new List <ILoggerProvider>
            {
                new ConsoleLogger(LogLevel.Debug, LogLevel.Error),
                new FileLogger(LogLevel.Debug, LogLevel.Error, system.ToString(), LogPool.Directory, LogPool.HoldDays)
            };

            LogPool.SetLoggerProviders(loggerProviders);
            //添加日志和监听端口
            IWebHostBuilder builder = WebHost.CreateDefaultBuilder(args)
                                      .ConfigureLogging((hostingContext, logging) =>
            {
                logging.ClearProviders();
                foreach (ILoggerProvider loggerProvider in loggerProviders)
                {
                    logging.AddProvider(loggerProvider);
                }
            })
                                      .UseUrls($"http://+:{listenPort}/");

            //http配置项
            //if (system!=(int)SystemType.系统管理中心&&systemUrl != null)
            //{
            //    builder.ConfigureAppConfiguration((hostingContext, config) =>
            //    {
            //        config.AddHttpConfiguration(systemUrl, parameterType);
            //    });
            //}

            if (system == SystemType.Flow)
            {
                builder.UseStartup <FlowStartup>();
            }
            else if (system == SystemType.Density)
            {
                builder.UseStartup <DensityStartup>();
            }
            else
            {
                builder.UseStartup <SystemStartup>();
            }

            IWebHost webHost = builder.Build();

            LogPool.Logger.LogInformation((int)LogEvent.配置项, $"System {system}");
            LogPool.Logger.LogInformation((int)LogEvent.配置项, $"ListenPort {listenPort}");
            webHost.Run();
        }