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... } }