log4net ist mit über 113M Downloads (auf Nuget.org) einer der ältesten Hasen unter die Logger für .NET/C#. Ich verwende es seit 2011, und war damit zufrieden bis ich den neueren Logger NLog entdeckt hatte 🙂
Um log4net in eigene Anwendungen zu verwenden muss dies installiert werden:

Danach muss die Konfiguration des Projekts mit der Konfiguration für log4net erweitert werden:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/>
</configSections>
<log4net>
<root>
<level value="DEBUG"/>
<appender-ref ref="RollingFileAppender"/>
<appender-ref ref="ColoredConsoleAppender"/>
</root>
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="T:\MyTemp\Logs\MyApplication\log.txt"/>
<appendToFile value="true"/>
<rollingStyle value="Size"/>
<maxSizeRollBackups value="3"/>
<maximumFileSize value="10MB"/>
<staticLogFileName value="true"/>
<layout type="log4net.Layout.PatternLayout">
<!--<conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />-->
<conversionPattern value="%date{HH:mm:ss,fff} (%-2thread) [%-5level] %type.%method - %message%newline"/>
</layout>
</appender>
<appender name="ColoredConsoleAppender" type="log4net.Appender.ColoredConsoleAppender">
<mapping>
<level value="ERROR"/>
<foreColor value="Red, HighIntensity"/>
<!-- backColor value="Black" / -->
</mapping>
<mapping>
<level value="DEBUG"/>
<foreColor value="Green, HighIntensity"/>
</mapping>
<mapping>
<level value="WARN"/>
<foreColor value="Yellow"/>
</mapping>
<mapping>
<level value="INFO"/>
<foreColor value="Cyan, HighIntensity"/>
</mapping>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date{HH:mm:ss,fff} (%-2thread) [%-5level] %type.%method - %message%newline"/>
<!--<conversionPattern value="%date{HH:mm:ss,ffff} [%thread{2}] - %message%newline" />-->
</layout>
</appender>
</log4net>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6"/></startup></configuration>
Nun kann der Logger im Code wie folgt verwendet werden:
public class Program
{
// Create logger for this class ( = typeof(Program)).
private static readonly ILog Logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
public void Main(string[] args)
{
Logger.Info("Starting application from console...");
// more code...
}
}

