public string GetFormattedMessage(LogEventInfo ev) { int size = 0; foreach (LayoutAppender app in _layoutAppenders) { int ebs = app.GetEstimatedBufferSize(ev); size += ebs; } StringBuilder builder = new StringBuilder(size); foreach (LayoutAppender app in _layoutAppenders) { app.Append(builder, ev); } return builder.ToString(); }
public abstract int GetEstimatedBufferSize(LogEventInfo ev);
public abstract void Append(StringBuilder builder, LogEventInfo ev);
private void WriteToAppenders(LogLevel level, ArrayList appenders, IFormatProvider formatProvider, string message, object[] args) { if (LogManager.ReloadConfigOnNextLog) LogManager.ReloadConfig(); if (appenders.Count == 0) return; string formattedMessage; if (args == null) formattedMessage = message; else formattedMessage = String.Format(formatProvider, message, args); LogEventInfo logMessage = new LogEventInfo(DateTime.Now, level, _loggerName, formattedMessage); #if !NETCF bool needTrace = false; bool needTraceSources = false; foreach (Appender app in appenders) { int nst = app.NeedsStackTrace(); if (nst > 1) { needTraceSources = true; } if (nst > 0) { needTrace = true; break; } } StackTrace stackTrace = null; if (needTrace) { int firstUserFrame = 0; stackTrace = new StackTrace(STACK_TRACE_SKIP_METHODS, needTraceSources); for (int i = 0; i < stackTrace.FrameCount; ++i) { System.Reflection.MethodBase mb = stackTrace.GetFrame(i).GetMethod(); if (!mb.DeclaringType.FullName.StartsWith("NLog.")) { firstUserFrame = i; break; } else { // Console.WriteLine("skipping stack frame: " + mb); } } logMessage.SetStackTrace(stackTrace, firstUserFrame); } #endif foreach (Appender app in appenders) { app.Append(logMessage); } }
public abstract void Append(LogEventInfo ev);
public override void Append(LogEventInfo ev) { _logs.Add(CompiledLayout.GetFormattedMessage(ev)); }