How to Use Logger in WPF Application
Steps to Follow
- Create a WPF application in Visual Studio.
- Go to NuGet package manager.
- Select Manage NuGet Packages for Solution.
- Select log4net by Apache Software.
- Add a config file to project name it as “log4net.config”.
- Select Application Configuration File from menu.
- Rename file to “log4net.config”.
- Select log4net.config from solution explorer, see for options in properties :
- Build Action → Change to “ Content”.
- Copy to output directory → Change to “copy always”.
Making appropriate changes in “log4net.config” File
<log4net>
<root>
<level value="ALL" />
<appender-ref ref="console" />
<appender-ref ref="file" />
</root>
<appender name="console" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %level %logger - %message%newline" />
</layout>
</appender>
<appender name="file" type="log4net.Appender.RollingFileAppender">
<file value="DIRECTORY WHERE YOU WANT TO COPY THE LOG FILES\LOG_FILE_NAME.log" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="5" />
<maximumFileSize value="2MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %level %logger - %message%newline" />
</layout>
</appender>
</log4net>
Open AssemblyInfo.cs from solution explorer and add at the end
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
Configure App.xaml.cs file
- Add ‘using log4net;’ reference.
- Add these codes inside “public partial class App : Application” :
private static readonly ILog log = LogManager.GetLogger(typeof(App)); protected override void OnStartup(StartupEventArgs e) { log4net.Config.XmlConfigurator.Configure(); log.Info(" ============= Started Logging ============= "); base.OnStartup(e); }
Open MainWindow.cs
- Add reference :
using log4net;
- Add these codes inside “public partial class MainWindow”
private static readonly ILog log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
- Inside public MainWindow() :
log4net.Config.XmlConfigurator.Configure();
- Options available for logs :
```
/*
- log.info
- log.error
- log.fatal
- log.debug */ ``` ## Start Logging by running the solution
For Tutorial visit https://medium.com/nerd-stuff/logger-for-wpf-application-570eb9cbe546