Пример #1
0
        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;
        }
Пример #2
0
        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}");
                }
            });
        }