首页 > 学院 > 开发设计 > 正文

log4net日志的配置及简单应用

2019-11-14 16:34:03
字体:
来源:转载
供稿:网友

在程序运行中,往往会出现各种出乎开发人员意料的异常或者错误,所以,记录详细的程序运行日志信息,有利于开发人员和运维人员排查异常信息,提高工作效率。而本菜鸟在大神推荐和指导下使用log4net这一插件工具,其中也学到了一些皮毛,所谓好记性不如烂笔头嘛。为此,将把这些心得体会记录下来,以免遗忘。同时,也为各位童鞋提供一些参考。在此声明,本文粗浅之极,大神莫入。

 

对于log4net有什么功能,这里就不赘述了。直接进入本文重点,也就是log4net的配置和简单使用。

首先,项目要引入log4net.dll。

 

然后,为项目增加配置文件——log4net.config

 

<log4net><!--日志配置,按日期保存-->  <appender name="DefaultLog" type="log4net.Appender.RollingFileAppender">    <file value="LogFiles/" />    <threshold value="WARN" />    <appendToFile value="true" />    <maxSizeRollBackups value="-1" />    <maximumFileSize value="30MB" />    <rollingStyle value="Composite" />    <datePattern value='yyyy-MM-dd".log"' />    <staticLogFileName value="false" />    <layout type="log4net.Layout.PatternLayout">      <header value="-----------程序开始运行-----------" />      <footer value="-----------程序结束运行-----------" />      <conversionPattern value="%date [%thread] %-5level %logger - %message%n" />    </layout>  </appender>  <!--日志配置,按日期保存-->  <appender name="BaseLog" type="log4net.Appender.RollingFileAppender">    <file value="LogFiles/" />    <appendToFile value="true" />    <maxSizeRollBackups value="-1" />    <maximumFileSize value="30MB" />    <rollingStyle value="Composite" />    <datePattern value='yyyy-MM-dd".log"' />    <staticLogFileName value="false" />    <layout type="log4net.Layout.PatternLayout">      <header value="-----------程序开始运行-----------" />      <footer value="-----------程序结束运行-----------" />      <conversionPattern value="%date [%thread] %-5level - %message%newline" />    </layout>  </appender>  <!--控制台日志配置,按日期保存-->  <appender name="ConsoleLog" type="log4net.Appender.RollingFileAppender">    <file value="LogFiles/" />    <appendToFile value="true" />    <maxSizeRollBackups value="-1" />    <maximumFileSize value="30MB" />    <rollingStyle value="Composite" />    <datePattern value='yyyy-MM-dd".log"' />    <staticLogFileName value="false" />    <layout type="log4net.Layout.PatternLayout">      <header value="-----------程序开始运行-----------" />      <footer value="-----------程序结束运行-----------" />      <conversionPattern value="%date [%thread] %-5level - %message%newline" />    </layout>  </appender>  <!--窗体日志配置,按日期保存-->  <appender name="FromLog" type="log4net.Appender.RollingFileAppender">    <file value="LogFiles/" />    <appendToFile value="true" />    <maxSizeRollBackups value="-1" />    <maximumFileSize value="30MB" />    <rollingStyle value="Composite" />    <datePattern value='yyyy-MM-dd".log"' />    <staticLogFileName value="false" />    <layout type="log4net.Layout.PatternLayout">      <header value="-----------程序开始运行-----------" />      <footer value="-----------程序结束运行-----------" />      <conversionPattern value="%date [%thread] %-5level - %message%newline" />    </layout>  </appender>  <!-- 根级别,作为默认值 -->  <root>    <!--        OFF   - 不输出任何日志        FATAL - 仅输异常        ERROR - 输出错误/异常信息        WARN  - 输出警告/错误/异常信息        INFO  - 输出普通/警告/错误/异常信息,默认        DEBUG - 输出调试/普通/警告/错误/异常信息        ALL   - 与DEBUG相同    -->    <level value="WARN" />    <!--如果找不到对应的logger,会自动使用这个默认的日志-->    <appender-ref ref="DefaultLog" />  </root>  <logger name="MyLog.Base.Log">    <level value="DEBUG" />    <appender-ref ref="BaseLog" />  </logger>  <logger name="MyLog.Base.Console">    <level value="DEBUG" />    <appender-ref ref="ConsoleLog" />  </logger>    <logger name="MyLog.Base.Form">    <level value="DEBUG" />    <appender-ref ref="FromLog" />  </logger></log4net>

 

 

在此,简单解释上面配置文件的使用,首先是<appender/>和<logger/>节点必须成对,每对配置,就是一个日志输出的配置。<appender-ref ref="BaseLog" />中属性ref的值对应<appender>的属性name的值。而<layout/>中的信息为日志输出的格式信息。其他的,就不一一解释了。

配置文件完成以后,为了让log4跑起来,还需要添加一个调用类——Logger。

 

 

using System;using System.Collections.Generic;using System.Linq;using System.Text;using log4net;namespace Base{    public  class Loggers    {        public static readonly ILog FormLogger = LogManager.GetLogger("MyLog.Base.Form");        public static readonly ILog ConsoleLogger = LogManager.GetLogger("MyLog.Base.Console");        public static readonly ILog BaseLogger = LogManager.GetLogger("MyLog.Base.Log");    }}



 

 

值得注意的是,上面类中GetLogger("MyLog.Base.Log")中“MyLog.Base.Log”必须和配置文件中<loggger name="MyLog.Base.Log">的name属性值保持一致。
之后,为了让log4net跑起来,还需要添加代码来加载log4net配置文件,根据大神的传授,有两种加载方法:

 

 

1、在程序文件AssemblyInfo.cs中加上

[assembly: log4net.Config.xmlConfigurator(ConfigFile = "log4net.config", Watch = true)]

 

2、在程序load事件中加上

 //读取log4net配置文件              log4net.Config.XmlConfigurator.Configure(new Uri(AppDomain.CurrentDomain.SetupInformation.applicationBase + "log4net.config"));

 

P.S:方法一我没有实现成功,可能是因为某些问题我没有发现,哪位童鞋知道原因可以告知我一下。不过方法二的使用成功了。

最后就是写入信息到文件的问题了,其实就一句代码:

 

 

Loggers.BaseLogger.Debug("Run Start");

 

 

同时,我们还可以根据日志输出的级别来选取输出的方法,日志的输出级别如下:

        OFF   - 不输出任何日志
        FATAL - 仅输异常
        ERROR - 输出错误/异常信息
        WARN  - 输出警告/错误/异常信息
        INFO  - 输出普通/警告/错误/异常信息,默认
        DEBUG - 输出调试/普通/警告/错误/异常信息
        ALL   - 与DEBUG相同

 

本文完。

附注:log4net下载地址:点击打开链接


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表