WinForm和WPF使用log4net
一、从Nuget下载lognet.dll
找到log4net之后,单击log4net,右侧会出现你的项目,勾选要安装的项目,然后点击“安装”。
二、打开app.config,进行如下设置
<?xml version="1.0" encoding="utf-8"?> <configuration> <!--<startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7"/> </startup>--> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> </configSections> <log4net> <!--定义输出到文件中--> <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> <!--定义文件存放位置--> <file value="Log\\Error\\"/> <appendToFile value="true"/> <rollingStyle value="Date"/> <datePattern value="yyyy\\yyyyMM\\yyyyMMdd'.txt'"/> <staticLogFileName value="false"/> <param name="MaxSizeRollBackups" value="100"/> <layout type="log4net.Layout.PatternLayout"> <!--每条日志末尾的文字说明--> <!--输出格式--> <!--样例:2008-03-26 13:42:32,111 [10] INFO Log4NetDemo.MainClass [(null)] - info--> <conversionPattern value="%newline %n记录时间:%date %n线程ID:[%thread] %n日志级别: %-5level %n出错类:%logger property: [%property{NDC}] - %n错误描述:%message%newline %n"/> </layout> </appender> <root> <level value="ERROR"/> <!--文件形式记录日志--> <appender-ref ref="RollingLogFileAppender"/> </root> </log4net> </configuration>
以上设置中
<file value="Log\\Error\\"/>
<datePattern value="yyyy\\yyyyMM\\yyyyMMdd'.txt'"/>
代表生成路径及格式为:Log\\Error\\yyyy\\yyyyMM\\yyyyMMdd.txt
如有需要,可自行修改。
三、WPF:在项目中找到Properties文件夹中找到AssemblyInfo.cs ,设置log4net
Winform:在项目中找到Program.cs,在Main函数中设置log4net
WPF:
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
![](https://img2020.cnblogs.com/blog/1683111/202009/1683111-20200908140747094-1123486941.png)
Winform:
log4net.Config.XmlConfigurator.Configure();
以上是Winform程序和WPF程序使用log4net的唯一区别点。
四、建立调用对象。建log类。
public static class LogTools { /// <summary> /// 用来记录error和warn /// </summary> public static log4net.ILog ErrorWarnLog = log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); }
五、程序中应用案例
有个地方要注意,调用方式是LogTools.ErrorWarnLog.Error(e),不是LogTools.ErrorWarnLog.Error(e.Message),一开始我是错误的写法,记录的Error信息异常,导致我找了半天,在此提醒下大家。
/// <summary> /// 线程工作步骤 /// </summary> private void Working() { try { while (true) { //线程步骤,略 } } catch (Exception e) { LogTools.ErrorWarnLog.Error(e); } }
六、log信息
完~