
本文共 6929 字,大约阅读时间需要 23 分钟。
���������ELK���������������������������������������������������������������������������������������������������������������������(level)������������������������������������������Nlog���Log4Net���������Process���������level������������������������������������������������������������������������PROCESS LEVEL���������������������������������������������������������������������������������������������������������������
NlogExtend.cs���(Nlog���������)���������������������������
public static class NlogExtend { public static void Process(this ILogger logger, string message = "RUNNING") { var logEventInfo = new LogEventInfo(LogLevel.Trace, logger.Name, message); logEventInfo.Properties["custLevel"] = Tuple.Create(9, "Process"); logger.Log(logEventInfo); } } [LayoutRenderer("levelx")] public class LevelExLayoutRenderer : LevelLayoutRenderer { protected override void Append(StringBuilder builder, LogEventInfo logEvent) { if (logEvent.Level == LogLevel.Trace && logEvent.Properties.ContainsKey("custLevel")) { var custLevel = logEvent.Properties["custLevel"] as Tuple; if (custLevel == null) { throw new InvalidCastException("Invalid Cast Tuple "); } switch (this.Format) { case LevelFormat.Name: builder.Append(custLevel.Item2); break; case LevelFormat.FirstCharacter: builder.Append(custLevel.Item2[0]); break; case LevelFormat.Ordinal: builder.Append(custLevel.Item1); break; } } else { base.Append(builder, logEvent); } } }
������Nlog���LogLevel������������������������������New ���������������������������������Level���������������������������������level���������LogEventInfo������������������������������������������������������LevelLayoutRenderer���������������������������OK���
���������������
config���������(���levelx���������������level������)
���
���������������PROCESS���������
////// ������NLOG������������������������ /// public static class LogUtil { private readonly static ILogger logger = null; static LogUtil() { NLog.Config.ConfigurationItemFactory.Default.LayoutRenderers.RegisterDefinition("levelx", typeof(WMSNWPP.LevelExLayoutRenderer));//������������������������������������������config������������levelx������������ logger = LogManager.GetCurrentClassLogger(); } public static void Info(string msg) { try { logger.Info(msg); } catch { } } public static void Error(Exception ex) { try { logger.Error(ex); } catch { } } public static void Error(string msg) { try { Log(LogLevel.Error, msg); } catch { } } public static void Warn(string msg) { try { logger.Warn(msg); } catch { } } public static void Log(LogLevel level, string msg) { try { logger.Log(level, msg); } catch { } } public static void Process(string message = "RUNNING") { try { logger.Process(message); } catch { } } }//���������Process������������LogUtil.Process();
���������Nlog������������������Log4Net������������������
Log4NetExtend.cs:(Nlog���������)���������������������������
////// Log4Net���������������������Process���LOG LEVEL���������������������������������������) /// Author:Zuowenjun /// Date:2018-4-25 /// public static class Log4NetExtend { public static readonly log4net.Core.Level ProcessLevel = new log4net.Core.Level(10001, "PROCESS"); private static void AddProcessLevel(log4net.ILog log) { if (!log.Logger.Repository.LevelMap.AllLevels.Contains(ProcessLevel)) { log.Logger.Repository.LevelMap.Add(ProcessLevel); } } public static void Process(this log4net.ILog log, string message) { AddProcessLevel(log); log.Logger.Log(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType, ProcessLevel, message, null); } public static void ProcessFormat(this log4net.ILog log, string message, params object[] args) { AddProcessLevel(log); string formattedMessage = string.Format(message, args); log.Logger.Log(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType, ProcessLevel, formattedMessage, null); } } ////// ������������������������������ /// public class ProcessPatternConvert : PatternLayoutConverter { private readonly static string processName = System.Diagnostics.Process.GetCurrentProcess().ProcessName; protected override void Convert(System.IO.TextWriter writer, log4net.Core.LoggingEvent loggingEvent) { writer.Write(processName);//��������������������� } } public class CustomPatternLayout : log4net.Layout.PatternLayout { public CustomPatternLayout() { this.AddConverter("proc", typeof(ProcessPatternConvert)); } }
���log4net���������Nlog������������������������New Level������������������������������������level���������������������������������������������������������������������������������������������ProcessPatternConvert���CustomPatternLayout���������CustomPatternLayout������������������ProcessPatternConvert���������������������������������������������������������config������������������proc���������������������������config���������������
������������������������
public static ILog Logger = LogManager.GetLogger("KyAutoTimingExecSystem");Logger.Process(msg);
������������������������������������������������������������������������������������������������������������������������������������������������������������
发表评论
最新留言
关于作者
