Folgende Konfiguration sorgt dafür, dass im Normalfall nur Info-Meldungen in die Logfile geschrieben werden. Tritt ein Fehler auf, werden zusätzlich Debug-Ausgaben geloggt:
<appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
<file value="D:Logscodelog.log"></file>
<appendtofile value="true"></appendtofile>
<maximumfilesize value="10000KB"></maximumfilesize>
<maxsizerollbackups value="50"></maxsizerollbackups>
<layout type="log4net.Layout.PatternLayout">
<conversionpattern value="%d \[%t\] %-5p %c %L – %m%n"></conversionpattern>
</layout>
</appender>
<appender name="BufferedFileInfo" type="log4net.Appender.BufferingForwardingAppender">
<bufferSize value="1" />
<lossy value="true"/>
<evaluator type="log4net.Core.LevelEvaluator">
<threshold value="INFO" />
</evaluator>
<appender-ref ref="RollingFile" />
</appender>
<appender name="BufferedFileError" type="log4net.Appender.BufferingForwardingAppender">
<bufferSize value="20" />
<lossy value="true"/>
<evaluator type="log4net.Core.LevelEvaluator">
<threshold value="ERROR" />
</evaluator>
<appender-ref ref="RollingFile" />
</appender>
<root>
<appender-ref ref="BufferedFileInfo">
<appender-ref ref="BufferedFileError">
</root>
Zur Erklärung: Der BufferFileInfo hat einen Puffer von “1”, speichert also nur eine Zeile und schreibt alles vom Status “INFO” in die Logfile. Der BufferedFileError reagiert nur bei Fehlern und speichert die letzten 20 Log-Ausgaben, unabhängig vom Level. Beide senden die Ausgaben an “RollingFile”, der für das eigentliche Schreiben in die Logfile sorgt.