static object lockLog = new object();//日志锁 public static void Init() { var builder = new ConfigurationBuilder() .SetBasePath(AppDomain.CurrentDomain.BaseDirectory) .AddJsonFile("appsettings.json", false); var configuration = builder.Build(); //加载配置到全局 GlobalConfig.ConnetionString = configuration.GetValue <string>("DBConfig:ConnetionString"); GlobalConfig.NatPort = configuration.GetValue <int>("ServerConfig:NatPort"); GlobalConfig.ServerPort = configuration.GetValue <int>("ServerConfig:ServerPort"); GlobalConfig.DefaultUrl = configuration.GetValue <string>("ServerConfig:DefaultUrl"); GlobalConfig.RegRoleId = configuration.GetValue <string>("ServerConfig:RegRoleId"); var repository = LogManager.CreateRepository("NETCoreRepository"); XmlConfigurator.Configure(repository, new FileInfo("log4net.config")); Log4netUtil.LogRepository = repository;//类库中定义的静态变量 LogHelper.WriteLog += (level, log, isPrint) => { lock (lockLog) { switch (level) { case LogLevel.Debug: Log4netUtil.Debug(log); break; case LogLevel.Information: Console.ForegroundColor = ConsoleColor.Green; Log4netUtil.Info(log); break; case LogLevel.Warning: Console.ForegroundColor = ConsoleColor.Yellow; Log4netUtil.Warn(log); break; case LogLevel.Error: Console.ForegroundColor = ConsoleColor.Red; Log4netUtil.Error(log); break; case LogLevel.Critical: Console.ForegroundColor = ConsoleColor.DarkRed; Log4netUtil.Fatal(log); break; default: Console.ForegroundColor = ConsoleColor.Green; Log4netUtil.Info(log); break; } if (isPrint) { Console.Write(LogHelper.GetString(level)); Console.ResetColor(); Console.WriteLine($"{DateTime.Now:yyyy-MM-dd HH:mm:ss,ffff} {log}"); } } }; Task.Run(() => { while (true) { //更新假在线的主机 var bll = new ClientBll(); var res = bll.UpdateOfflineClient(); LogHelper.Info(res.Message, false); Thread.Sleep(60000); } }); var appSettingSetion = configuration.GetSection("AppSettingConfig"); var appSettingConfig = appSettingSetion.Get <AppSettingConfig>(); AppDomain.CurrentDomain.UnhandledException -= CurrentDomain_UnhandledException; AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; }
static object lockLog = new object();//日志锁 public static void Start() { Task.Run(() => { try { //初始化配置 var builder = new ConfigurationBuilder() .SetBasePath(AppDomain.CurrentDomain.BaseDirectory) .AddJsonFile("appsettings.json", false); var configuration = builder.Build(); Secret = configuration.GetValue <string>("Secret"); ServerUrl = configuration.GetValue <string>("ServerUrl"); ServerPort = configuration.GetValue <int>("ServerPort"); NatPort = configuration.GetValue <int>("NatPort"); var repository = LogManager.CreateRepository("NETCoreRepository"); XmlConfigurator.Configure(repository, new FileInfo("log4net.config")); Log4netUtil.LogRepository = repository;//类库中定义的静态变量 LogHelper.WriteLog += (level, log, isPrint) => { lock (lockLog) { switch (level) { case LogLevel.Debug: Log4netUtil.Debug(log); break; case LogLevel.Information: Console.ForegroundColor = ConsoleColor.Green; Log4netUtil.Info(log); break; case LogLevel.Warning: Console.ForegroundColor = ConsoleColor.Yellow; Log4netUtil.Warn(log); break; case LogLevel.Error: Console.ForegroundColor = ConsoleColor.Red; Log4netUtil.Error(log); break; case LogLevel.Critical: Console.ForegroundColor = ConsoleColor.DarkRed; Log4netUtil.Fatal(log); break; default: Console.ForegroundColor = ConsoleColor.Green; Log4netUtil.Info(log); break; } if (isPrint) { Console.Write(LogHelper.GetString(level)); Console.ResetColor(); Console.WriteLine($"{DateTime.Now:yyyy-MM-dd HH:mm:ss,ffff} {log}"); } } }; //连接服务器 ConnectNatServer(); //开启重连线程 reConnectThread = new Thread(ReConnect) { IsBackground = true }; reConnectThread.Start(); //开启心跳线程 heartThread = new Thread(SendHeart) { IsBackground = true }; heartThread.Start(); } catch (Exception ex) { LogHelper.Info($"Start Error:{ex}"); } }); }