之前遇到过几次添加完log4net.dll的引用之后一直无法写出日志的情况,现在整理并记录一下,方便后续查看。
一、添加log4net.dll的引用
1、可通过从网上下载单独的log4net.dll进行添加也可以在项目当中使用Nuget包进行安装
2、添加完引用后需要在程序启动的位置添加配置的初始化(我写的是WPF项目,就以WPF项目为例。
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
log4net.Config.XmlConfigurator.Configure();
MainWindow s = new MainWindow();
s.ShowDialog();
}
3、在需要写日志的页面添加
public static log4net.ILog Log = log4net.LogManager.GetLogger("MainWindow");
其中括号中的MainWindow与配置文件中的名称要一致,配置文件后面会讲到如何配置。写日志时使用Log.Error(errMessage)即可,至于文件的存储名称和存储位置都是在配置文件中进行配置
4、配置文件
配置是卸载App.config中的具体如下:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="MyApp.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</sectionGroup>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<log4net>
<root>
<level value="ERROR" name="MainWindow"/>
<appender-ref ref="RollingLogFileAppender" />
</root>
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender,log4net">
<file type="log4net.Util.PatternString" value="Logs/%date{yyyy-MM-dd}.log" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value="yyyy-MM-dd" />
<maxSizeToRollBackups value="10" />
<maximumFileSize value="2000kb" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern" value="%d [%t] %-5p %c [%L] - %m%n" />
</layout>
</appender>
</log4net>
</configuration>
其中section内容如果配置文件中存在其他section就跟他写在同一个位置就行,若是存在sectiongroup一定要写在group外面,就向上面的代码一样,否则依然写不出日志。
接下来就是log4net的配置节,level记录日志的等级,具体包含那些等级baidu即可, level的name属性就是上面第三步骤中的括号中的名字。
file节点的value值就是文件存储的路径以及名称,其他配置节点基本上没啥了。按上面配完后基本就可以写出日志了。