'How to log the level as a single letter in log4net?
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)
Solution 1:[1]
See the document: https://logback.qos.ch/manual/layouts.html
You can do it easily by formatter:
%.-1level
Although, the usage of negative numbers is strange here.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Calarpo |
