zoukankan      html  css  js  c++  java
  • log4net 使用笔记

    一、Log4net特征

     

    1、自定义日志输出级别

    Log4net将日志分为五个级别优先级从高到低依次:FATAL > ERROR > WARN > INFO > DEBUG,此外还有ALL(允许所有的日志请求)和OFF(拒绝所有的日志请求)这两种特殊的级别。可以通过日志级别来控制日志是否输出。

    如果你配置文件中定义的是INFO级别,程序中有三种日志记录方式

    Log.Info(“日志内容”),Log.Warn(“日志内容”),Log.Debug(“日志内容”)

    则Log.Info,Log.Debug都会输出日志,Log.Warn不会输出日志。

    2、自定义日志输出方式

    Log4net的日志输出方式很灵活,可以将日志输出至文本文件,控制台,邮件,Windows Event Log,数据库等等。对于写日志至文本文件还可以有如下非常灵活的配置。

    a、按时间段打印日志,按月,按日 ,按时,按分等随你配置 b、按文件的大小 打印滚动日志,如每10M,100M一个日志文件,这样可以防止日志文件不至于过大,日志文件达到4,5G日后我们基本上就很难打开了。 c、指定日志大小,比如说指定500M,那么日志将只有一个且不会超出500M。

     

     

    二、Log4net的安装

     

    1、用户可以从 http://logging.apache.org/log4net/ 下载log4net的源代码。

    2、解压软件包后,在解压的src目录下将log4net.sln载入Visual Studio .NET,编译后可以得到log4net.dll。

    3、用户要在自己的程序里加入日志功能,只需将log4net.dll引入工程即可。

     

    三、在程序中使用log4net

     

    1、log4net配置文件与程序的关联

    log4net的配置可以放在应用程序的默认配置文件中(app.config或web.config),也可以在自己指定的配置文件中。log4net框架中是使用log4net.Config.XmlConfigurator在程序集的级别上定义配置文件。

    例如,找到当前项目的Assemblyinfo.cs文件添加下面一行,将与Web.config文件关联起来

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

     

    Assemblyinfo.cs配置说明

    ConfigFile

    指出了我们的配置文件的路径及文件名,包括扩展名。

    ConfigFileExtension

    如果我们对被编译程序的程序集使用了不同的文件扩展名,那么我们需要定义这个属性,缺省的,程序集的配置文件扩展名为”config”。

    Watch (Boolean属性)

    log4net框架用这个属性来确定是否需要在运行时监视文件的改变。如果这个属性为true,那么FileSystemWatcher将会被用来监视文件的改变,重命名,删除等事件。

    其中:ConfigFile和ConfigFileExtension属性不能同时使用,ConfigFile指出了配置文件的名字

     

     

    四、log4net的标准配置文档示例(web.config)

     

    XML 代码   复制
    <?xmlversion="1.0"encoding="utf-8" ?>
    
    <configuration>
    
      <configSections>
    
        <sectionname="log4net"
    
                 type="log4net.Config.Log4NetConfigurationSectionHandler" />
    
      </configSections>
    
      <log4net>
    
        <root>
    
          <levelvalue="WARN" />
    
          <appender-refref="LogFileAppender" />
    
          <appender-refref="ConsoleAppender" />
    
        </root>
    
        <loggername="testApp.Logging">
    
          <levelvalue="DEBUG"/>
    
        </logger>
    
        <appendername="LogFileAppender"  type="log4net.Appender.FileAppender" >
    
          <paramname="File"value="log-file.txt" />
    
          <paramname="AppendToFile"value="true" />
    
          <layouttype="log4net.Layout.PatternLayout">
    
            <paramname="Header"value="[Header]&#13;&#10;"/>
    
            <paramname="Footer"value="[Footer]&#13;&#10;"/>
    
            <paramname="ConversionPattern"  value="%d [%t] %-5p %c[%x]  - %m%n" />
    
          </layout>
    
          <filtertype="log4net.Filter.LevelRangeFilter">
    
            <paramname="LevelMin"value="DEBUG" />
    
            <paramname="LevelMax"value="WARN" />
    
          </filter>
    
        </appender>
    
        <appendername="ConsoleAppender"   type="log4net.Appender.ConsoleAppender" >
    
          <layouttype="log4net.Layout.PatternLayout">
    
            <paramname="ConversionPattern"  value="%d [%t] %-5p %c [%x] -%m%n" />
    
          </layout>
    
        </appender>
    
      </log4net>
    
    </configuration>
    

     

    五、配置文件节点说明

     

    1、在配置章节中,定义section节点。节点名称为:须为log4net,且大小写敏感。

             <configSections>

                        <sectionname="log4net"

                                  type="log4net.Config.Log4NetConfigurationSectionHandler" />

             </configSections>

     

    2、root节点说明  

     

    (1)根logger,所有其它logger都默认继承它。root元素没有属性。

     

    2)支持的子元素

            appender-ref 0个或多个,要引用的appender的名字。

            level 最多一个。只有在这个级别或之上的事件才会被记录。

            param 0个或多个,设置一些参数。        

         

    (3)在<root>标签里,可以定义level级别值和Appender的列表。

            如果没有定义LEVEL的值,则缺省为DEBUG。可以通过<appender-ref>标签定义日志对象使用的Appender对象。<appender-ref>声明了在其他地方定义的Appender对象的一个引用。在一个logger对象中的设置会覆盖根日志的设置。而对Appender属性来说,子日志对象则会继承父日志对象的Appender列表。这种缺省的行为方式也可以通过显式地设定<logger>标签的additivity属性为false而改变。 

     

    3、Logger节点说明

     

    (1)支持的属性name,Additivity两个属性       

               name必须的,logger的名称

              additivity 可选,取值是true或false,默认值是true。设置为false时将阻止父logger中的appender。

     

    (2)支持的子元素

              appender-ref 0个或多个,要引用的appender的名字。

              evel最多一个。只有在这个级别或之上的事件才会被记录。

              param 0个或多个,设置一些参数。

            

    (3)<logger> 元素预定义了一个具体日志对象的设置

            然后通过调用LogManager.GetLogger(“testAPP.Logging”)函数,你可以检索具有该名字的日志。如果LogManager.GetLogger(…)打开的不是预定义的日志对象,则该日志对象会继承根日志对象的属性。知道了这一点,我们可以说,其实<logger>标签并不是必须的。

     

    4、Appender节点说明

     

    (1)定义日志的输出方式,只能作为 log4net 的子元素。name属性必须唯一,type属性必须指定。支持name,type两个属性。

               name 必须的,Appender对象的名称

               type 必须的,Appender对象的输出类型

     

    (2)支持的子元素

               appender-ref 0个或多个,允许此appender引用其他appender,并不是所以appender类型都支持。

                filter 0个或多个,定义此app使用的过滤器。

                layout 最多一个。定义appender使用的输出格式。

                param 0个或多个,设置Appender类中对应的属性的值。

     

    (3)在<root>标签或单个的<logger>标签里的Appender对象可以用<appender>标签定义

                <appender>标签的基本形式如上面所示。它定义了appender的名字和类型。 另外比较重要的是<appender>标签内部的其他标签。不同的appender有不同的<param>标签。在这里,为了使用FileAppender,你需要一个文件名作为参数。另外还需要一个在<appender>标签内部定义一个Layout对象。Layout对象定义在它自己的<layout>标签内。<layout>标签的type属性定义了Layout的类型(在本例里是PatternLayout),同时也确定了需要提供的参数值。Header和Footer标签提供了一个日志会话(logging session)开始和结束时输出的文字。有关每种appender的具体配置的例子,可以在log4netdocmanualexample-config-appender.html中得到。

     

    5、Filter节点说明

     

    过滤器,只能作为<appender>的子元素。

    支持的属性:

                type 必须的,Filter的类型

                支持的子元素:param 0个或多个,设置一些参数。

     

    6、Layout节点说明

            

    布局,只能作为<appender>的子元素。

    支持的属性:

               type 必须的,Layout的类型

     

               支持的子元素:param 0个或多个。

     

    log4net.Layout.PatternLayout中的转换模式(ConversionPattern)

     

    %m(message):输出的日志消息,如ILog.Debug(…)输出的一条消息

    %n(new line):换行

    %d(datetime):输出当前语句运行的时刻

    %r(run time):输出程序从运行到执行到当前语句时消耗的毫秒数

    %t(thread id):当前语句所在的线程ID

    %p(priority): 日志的当前优先级别,即DEBUG、INFO、WARN…等

    %c(class):当前日志对象的名称,例如:

    %L:输出语句所在的行号

    %F:输出语句所在的文件名

    %-数字:表示该项的最小长度,如果不够,则用空格填充

     

    例如

    转换模式为%r [%t]%-5p %c - %m%n 的 PatternLayout 将生成类似于以下内容的输出:

    176 [main] INFO  org.foo.Bar - Located nearest gas station.

     

    7、Param

     

    <param>元素可以是如何元素的子元素。

     

    支持的属性

             name 必须的,取值是父对象的参数名。

             value 可选的,value和type中,必须有一个属性被指定。value是一个能被转化为参数值的字符串。

             type 可选的,value和type中,必须有一个属性被指定。type是一个类型名,如果type不是在log4net程序集中定义的,就需要使用全名。

  • 相关阅读:
    AIMS 2013中的性能报告工具不能运行的解决办法
    读懂AIMS 2013中的性能分析报告
    在线研讨会网络视频讲座 方案设计利器Autodesk Infrastructure Modeler 2013
    Using New Profiling API to Analyze Performance of AIMS 2013
    Map 3D 2013 新功能和新API WebCast视频下载
    为Autodesk Infrastructure Map Server(AIMS) Mobile Viewer创建自定义控件
    ADN新开了云计算Cloud和移动计算Mobile相关技术的博客
    JavaScript修改css样式style
    文本编辑神器awk
    jquery 开发总结1
  • 原文地址:https://www.cnblogs.com/gc2013/p/4054640.html
Copyright © 2011-2022 走看看