123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204 |
- using CommonLang.Log;
- using log4net;
- using Newtonsoft.Json;
- using System;
- using System.Collections.Generic;
- using System.IO;
- namespace Pomelo
- {
- public class LogConfig
- {
-
-
-
- public string serverId;
-
-
-
- public string configFile;
-
-
-
- public string outputPath;
-
-
-
- public uint level;
- }
- public class PomeloLog : LoggerFactory
- {
- private uint logLevel;
- public PomeloLog(LogConfig config)
- {
- this.logLevel = config.level;
- if (this.logLevel == 0)
- {
- this.logLevel = 0xFF;
- }
- Console.WriteLine("C# log level:" + LogLevels(this.logLevel) + ",configFile:" + config.configFile);
- log4net.Config.XmlConfigurator.Configure(new FileInfo(config.configFile));
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- }
- private string AddLevel(uint levelMask, uint level, string name)
- {
- if ((level & levelMask) == levelMask)
- {
- return name + " ";
- }
- return "";
- }
- private string LogLevels(uint level)
- {
- string ret = "[";
-
-
- ret += AddLevel(LoggerLevel.DEBUG, level, "DEBUG");
-
- ret += AddLevel(LoggerLevel.INFO, level, "INFO");
- ret += AddLevel(LoggerLevel.WARNNING, level, "WARN");
- ret += AddLevel(LoggerLevel.ERROR, level, "ERROR");
-
- return ret + "]";
- }
- protected override Logger CreateLogger(string name)
- {
- Log4netLogger log = new Log4netLogger(log4net.LogManager.GetLogger(name));
- log.SetLevel(logLevel);
- return log;
- }
- }
- public class Log4netLogger : Logger
- {
- private log4net.ILog logger;
- public Log4netLogger(log4net.ILog logger)
- {
- this.logger = logger;
- }
- static readonly Dictionary<uint, ConsoleColor> logColor = new Dictionary<uint, ConsoleColor>()
- {
- { LoggerLevel.DEBUG , ConsoleColor.Green},
- { LoggerLevel.INFO , ConsoleColor.White},
- { LoggerLevel.WARNNING , ConsoleColor.Yellow},
- { LoggerLevel.ERROR , ConsoleColor.Red}
- };
- public void print2Console(uint level, string msg, Exception err = null)
- {
- ConsoleColor cc;
- if (logColor.TryGetValue(level, out cc))
- {
- Console.ForegroundColor = cc;
- }
- else
- {
- Console.ForegroundColor = ConsoleColor.White;
- }
- Console.WriteLine(msg);
- if (err != null)
- {
- Console.WriteLine(err.StackTrace);
- }
- Console.ForegroundColor = ConsoleColor.White;
- }
- public override void LogLevel(uint level, string msg, Exception err = null)
- {
-
- switch (level)
- {
-
-
-
- case LoggerLevel.DEBUG:
- logger.Debug(msg, err);
- break;
- case LoggerLevel.INFO:
- logger.Info(msg, err);
- break;
-
-
-
-
-
-
- case LoggerLevel.WARNNING:
- print2Console(level, msg, err);
- logger.Warn(msg, err);
- break;
- case LoggerLevel.ERROR:
- print2Console(level, msg, err);
- logger.Error(msg, err);
- break;
-
-
-
- default:
- print2Console(level, msg, err);
- logger.Error(msg, err);
- break;
- }
- }
- protected override void LogLevelInternal(uint level, object msg, object[] args, Exception exception)
- {
- if (IsLevelEnable(level))
- {
-
- if ("monitor".Equals(this.logger.Logger.Name))
- {
-
-
-
-
-
-
-
-
-
-
- string json = JsonConvert.SerializeObject(msg);
-
-
-
- msg = json;
- }
- base.LogLevelInternal(level, msg, args, exception);
- }
- }
- }
- }
|