I'm trying to write JSON logs with stamped events (currently just a ValueStamp, need a unique guid per log entry). I followed the guide here and my log4net.config looks like so
<log4net>
<root>
<loggerFactory type='log4net.Util.Stamps.StampingLoggerFactory, log4net.Ext.Json'>
<stamp type='log4net.Util.Stamps.ValueStamp, log4net.Ext.Json'>
<name>stamp</name>
<value>MyValueHere</value>
</stamp>
</loggerFactory>
<level value="ALL" />
<appender-ref ref="LogFileAppender" />
<appender-ref ref="JsonFileAppender" />
</root>
<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender" >
...
</appender>
<appender name="JsonFileAppender" type="log4net.Appender.RollingFileAppender" >
<param name="File" value="log-file.json" />
<param name="AppendToFile" value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="10MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.SerializedLayout, log4net.Ext.Json">
<decorator type="log4net.Layout.Decorators.StandardTypesFlatDecorator, log4net.Ext.Json" />
<default />
<!--explicit default members-->
<member value="Stamp:stamp" />
</layout>
</appender>
</log4net>
Unfortunately, all I see in my log messages are
{"date":"2015-09-16T17:19:13.7833747-07:00","level":"INFO","appname":"MyApp.exe","logger":"MyApp.Program","thread":"6","ndc":"(null)","message":"Processed request successfully","Stamp":"stamp"}
So my question is: How do I get the Json layout to show me the "MyValueHere" stamp?
I finally figured it out - I needed to put the loggerFactory before (and outside of) the root element. A working log4net.config looks like this:
<log4net>
<loggerFactory type="log4net.Util.Stamps.StampingLoggerFactory, log4net.Ext.Json">
<stamp type="log4net.Util.Stamps.ValueStamp, log4net.Ext.Json">
<name>stamp</name>
<value>MyValueHere</value>
</stamp>
</loggerFactory>
<root>
<level value="INFO" />
<appender-ref ref="JsonFileAppender" />
</root>
<appender name="JsonFileAppender" type="log4net.Appender.RollingFileAppender" >
<param name="File" value="log-file.json" />
<param name="AppendToFile" value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="10MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.SerializedLayout, log4net.Ext.Json">
<decorator type="log4net.Layout.Decorators.StandardTypesFlatDecorator, log4net.Ext.Json" />
<member value="Stamp:stamp"/>
<default />
</layout>
</appender>
</log4net>
With this config, every log entry comes out with the "MyValueHere" stamp.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With