Is there a way to change this configuration:
<appender name="appender" type="log4net.Appender.RollingFileAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] [%-5level] %logger - %message%newline" />
</layout>
</appender>
... to log the log-level as a single letter like this:
DEBUG -> D
INFO -> I
WARN -> W
ERROR -> E
FATAL -> F
I tried %-1level
but the number only controlls the number of characters to which to fill up with spaces. ([%-5level]
means [INFO ]
instead of [INFO]
) So [%-1level]
gave me [INFO]
instead of the expected [I]
.
My ideas so far:
Variante 1
I could configure a separate appender for each level where the level letter is set fixed for each level, all logging to the same file:
<appender name="info-appender" type="log4net.Appender.RollingFileAppender">
<lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
<file value="logfile.log" />
<filter type="log4net.Filter.LevelMatchFilter">
<levelToMatch value="INFO" />
</filter>
<filter type="log4net.Filter.DenyAllFilter" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] [I] %logger - %message%newline" />
</layout>
</appender>
<appender name="warn-appender" type="log4net.Appender.RollingFileAppender">
<lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
<file value="logfile.log" />
<filter type="log4net.Filter.LevelMatchFilter">
<levelToMatch value="WARN" />
</filter>
<filter type="log4net.Filter.DenyAllFilter" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] [W] %logger - %message%newline" />
</layout>
</appender>
.
.
<root>
<level value="ALL" />
<appender-ref ref="debug-appender" />
<appender-ref ref="info-appender" />
<appender-ref ref="warn-appender" />
<appender-ref ref="error-appender" />
<appender-ref ref="fatal-appender" />
</root>
Variante 2
I guess one could extend the log4net.Appender.RollingFileAppender
and override the render method or if possible some other internal method which renders the level. (have not checked if thats really possible)
Question:
Is there an easier way to achive this? (just with configuration)