Learing log4net 2nd

配置log4net

  这里使用web.config来展示配置方式,输出介质为文件,分别实现用户登录信息Log记录和程序错误Log记录配置。

  在根节点configuration下插入以下配置信息:

<configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler"/>
</configSections>
  
<log4net>    
    <appender name="LoginLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="D:/Login"/><!--表示生成文件位置,这里设置为D盘下的名称为Login的文件-->
      <appendToFile value="true"/><!--设置自动添加到文件-->
      <rollingStyle value="Date" /><!--设置根据日期生成多文件-->
      <datePattern value="yyyyMM" /><!--表示文件是根据年月生成的,既每一个月的登陆信息会记录在不同的文件中-->
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%d %m%n"/><!--记录信息的格式-->
      </layout>
      <filter type="log4net.Filter.LevelMatchFilter"><!--过滤器-->
        <param name="LevelToMatch" value="INFO"/><!--匹配INFO级别的记录-->
      </filter>
      <filter type="log4net.Filter.DenyAllFilter" /><!--这一个声明表示只匹配INFO级别-->
    </appender>
    
    <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="D:/Log"/><!--表示生成文件位置,这里设置为D盘下的名称为Log的文件-->
      <appendToFile value="true"/><!--设置自动添加到文件-->
      <rollingStyle value="Size"/><!--设置根据日记文件大小生成多文件-->
      <maxSizeRollBackups value="-1" /><!--表示生成的文件的个数无上限-->
      <maximumFileSize value="100MB" /><!--表示生成的文件大小最大为100MB-->
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%d 级别:%-5level 位置:%F 行号:%L - %m%n" /><!--记录信息的格式-->
      </layout>
    </appender>   
    
    <appender name="ErrorAppdender" type="log4net.Appender.RollingFileAppender">
      <file value="Log\Error"/><!--设置文件为根目录下的Log文件夹,名称开头为Error-->
      <staticLogFileName value="false" /><!--设置生成的文件名称为动态生成-->
      <appendToFile value="true"/>
      <rollingStyle value="Date"/>
      <datePattern value="yyyyMM.\tx\t"/><!--'t'需要加上反斜杠,才不会被转义-->
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="[%d] 级别:%-5level %n %m %n"/>
      </layout>
    </appender>    

    <logger name="LoginLog">
      <level value="INFO"/>
      <appender-ref ref="LoginLogFileAppender" />
    </logger>
    
    <logger name="Log">
      <level value="INFO"/>
      <appender-ref ref="LogFileAppender" />
    </logger>
    
    <logger name="ErrorLog">
      <level value="Error"/>
      <appender-ref ref="ErrorAppdender"/>
    </logger>    
</log4net>
配置信息

配置信息解析

  1. configSections:必须明确知道的一点就是web.config用来存储ASP.NET应用程序的配置信息,为了保证无冲突性,是不允许随意地在web.config中加入自定义节点。如果要实现自定义节点,就必须告诉web.config要用到什么节点,就像使用一个变量一样,在使用前总得进行初始化赋值,configSections节点就是起到这样的作用。name=“log4net”表示节点的名称为log4net,type=“log4net.Config.Log4NetConfigurationSectionHandler ”,type也是必选属性,同时要求类型必须实现IConfigurationSectionHandler接口,接口中有一个方法为object Create(object parent, object configContext, XmlNode section),可以通过调用System.Configuration.ConfigurationManager.GetSection(“log4net”)的方法访问Create接口的对象。Log4NetConfigurationSectionHandler的方法返回的是Create方法的参数section。

  2. log4net下的appender:配置日记输出介质的节点。首先必须注意的一点是对appender节点起一个有意义的名字,既name属性,因为这将被之后的节点引用到。type属性表示关联的Appender类,这里两个appender都使用了log4net.Appender.RollingFileAppender,表示输出介质将是动态文件。

  3. log4net下的logger:定义一个具体日记对象的设置,name属性是一个标识,可以通过调用代码LogManager.GetLogger(name属性标识)的方法返回一个Log。logger下的level表示设置可记录的日记等级,appender-ref表示要使用的appender,可以使用多个appender-ref。logger的使用让配置更加灵活,就从上面的例子来讲,LoginLog对应于一个专用的logger,Log对应于一个专用的logger。

日记级别

  log4net定义了5种记录方法,如下图所示:

  

  OFF是最高级别,既拒绝任何请求,ALL是最底级别,既允许任何请求。我们可以通过在配置文件中输入级别代号的方法操作允许日记级别,如配置文件中的name=“LoginLog”的logger,这里的LEVEL设置为INFO,表示支持INFO级别及其以上的日记级别,即支持FATAL,ERROR,WARN,INFO。

常用输出日记记录格式

  

  我们可以选择使用缩写也可以使用全称。

  %-数字一般通过组合使用,如上面的配置文件中:%-5level,表示level的预留字符串为5位,如果出现INFO这样不足5位的字符串,则末尾自动添加一个空格补足5位,这样做的主要原因是为了日记文件的可读性。

posted @ 2013-12-17 14:24  teroy  阅读(199)  评论(0)    收藏  举报