cjbhaines / Log4Net.Async

Asynchronous Log4Net appenders and forwarder
http://www.nuget.org/packages/Log4Net.Async/
MIT License
121 stars 37 forks source link

NullReferenceException if stack trace included in conversion pattern #20

Closed jmoudesluys closed 8 years ago

jmoudesluys commented 8 years ago

I'm getting an exception when attempting to log stack traces with the AsyncForwarder:

log4net:ERROR [RollingFileAppender] ErrorCode: GenericFailure. Failed in DoAppend
System.NullReferenceException: Object reference not set to an instance of an object.
   at log4net.Layout.Pattern.StackTracePatternConverter.Convert(TextWriter writer, LoggingEvent loggingEvent)
   at log4net.Layout.Pattern.PatternLayoutConverter.Convert(TextWriter writer, Object state)
   at log4net.Util.PatternConverter.Format(TextWriter writer, Object state)
   at log4net.Layout.PatternLayout.Format(TextWriter writer, LoggingEvent loggingEvent)
   at log4net.Appender.AppenderSkeleton.RenderLoggingEvent(TextWriter writer, LoggingEvent loggingEvent)
   at log4net.Appender.TextWriterAppender.Append(LoggingEvent loggingEvent)
   at log4net.Appender.FileAppender.Append(LoggingEvent loggingEvent)
   at log4net.Appender.AppenderSkeleton.DoAppend(LoggingEvent loggingEvent)

Here's my configuration:

<?xml version="1.0" encoding="utf-8" ?>
<log4net>
  <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
    <file value="log.txt" />
    <appendToFile value="true" />
    <rollingStyle value="Size" />
    <maxSizeRollBackups value="10" />
    <maximumFileSize value="100KB" />
    <staticLogFileName value="true" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date %stacktrace{10}" />
    </layout>
  </appender>
  <appender name="AsyncForwarder" type="Log4Net.Async.AsyncForwardingAppender,Log4Net.Async">
    <appender-ref ref="RollingFileAppender" />
  </appender>
  <root>
    <level value="ALL" />
    <appender-ref ref="AsyncForwarder" />
  </root>
</log4net>
cjbhaines commented 8 years ago

@jmoudesluy, that is an issue with your conversion pattern by the looks of things. If you look at your stack trace it doesn't touch any Log4Net.Async code so I'm closing this.