• Log4net之配置文件


    使用log4net前要先做一些配置的工作。配置工作可以在配置文件中完成也可以在程序中用代码完成。我们主要讲在配置文件中如何配置log4net,因为这样更方便灵活,而且还不用重新编译代码。

    (一)配置文件

    <?xml version="1.0" encoding="utf-8" ?>

    <configuration>

     

      <configSections>

        <section name="log4net"

                 type="log4net.Config.Log4NetConfigurationSectionHandler" />

      </configSections>

     

      <log4net>

     

        <root>

          <level value="WARN" />

          <appender-ref ref="LogFileAppender" />

          <appender-ref ref="ConsoleAppender" />

        </root>

     

        <logger name="testApp.Logging">

          <level value="DEBUG"/>

        </logger>

     

        <appender name="LogFileAppender"

                  type="log4net.Appender.FileAppender" >

          <param name="File" value="log-file.txt" />

          <param name="AppendToFile" value="true" />

     

          <layout type="log4net.Layout.PatternLayout">

            <param name="Header" value="[Header]&#13;&#10;"/>

            <param name="Footer" value="[Footer]&#13;&#10;"/>

            <param name="ConversionPattern"

                   value="%d [%t] %-5p %c [%x]  - %m%n" />

          </layout>

     

          <filter type="log4net.Filter.LevelRangeFilter">

            <param name="LevelMin" value="DEBUG" />

            <param name="LevelMax" value="WARN" />

          </filter>

     

        </appender>

     

        <appender name="ConsoleAppender"

                  type="log4net.Appender.ConsoleAppender" >

          <layout type="log4net.Layout.PatternLayout">

            <param name="ConversionPattern"

                   value="%d [%t] %-5p %c [%x] - %m%n" />

          </layout>

        </appender>

     

      </log4net>

    </configuration>

    log4net的配置可以放在应用程序的默认配置文件中(app.configweb.config),也可以再你自己的配置文件中。(如果log4net的配置不是放在应用程序的配置文件里,而是在自己定义的文件里,<configSection>节点里的<section>节点是不需要的。)

    (二)节点分析

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

    <configSections>

        <section name="log4net"

                 type="log4net.Config.Log4NetConfigurationSectionHandler" />

      </configSections>

     

    (三)Log4net章节内容

    debug 可选,取值是truefalse,默认是false。设置为true,开启log4net的内部调试。

    update 可选,取值是Merge(合并)Overwrite(覆盖),默认值是Merge。设置为Overwrite,在提交配置的时候会重置已经配置过的库。  

    threshold 可选,取值是repository(库)中注册的level,默认值是ALL

    支持的子元素:

    ·appender  0或多个

    ·logger 0或多个

    ·renderer 0或多个

    ·root 最多一个

    ·param 0或多个

    (四)两个Appenders(输出源)

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

    支持的属性:

    name 必须的,Appender对象的名称

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

    支持的子元素:

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

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

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

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

     

    ·LogFileAppender

    节点日志文件输出type="log4net.Appender.FileAppender"

    ·ConsoleAppender

    节点控制台输出。type="log4net.Appender.ConsoleAppender"

     

    (五)一个root

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

    支持的子元素:

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

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

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

    <root>

          <level value="WARN" />

          <appender-ref ref="LogFileAppender" />

          <appender-ref ref="ConsoleAppender" />

        </root>

    (六)Logger

    支持的属性:

    name 必须的,logger的名称

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

    支持的子元素:

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

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

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

     

    <logger name="testApp.Logging">

          <level value="DEBUG"/>

        </logger>

    (七)Layout

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

    支持的属性:

    type 必须的,Layout的类型

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

    (八)Filter

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

     

    支持的属性:

    type 必须的,Filter的类型

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

    (九)Param

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

     

    支持的属性:

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

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

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

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

     

    附:log4netxsd schema文件。

    http://www.cnblogs.com/didasoft/archive/2007/07/23/log4net_xsd.html(用的时候,请感谢一下作者)

     这个版本已经旧了。再提供一个新版本

    log4net新版本 请保留文件中的版本信息。

    再补充一下:此版本与log4net最新版1.2.10还不能完全兼容。现已经发现一点:

    mssql数据库写日志时,connectionType 请使用

    官网提供的:

    System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089

    自己可以修改一下xsd

    如果谁有完全适应的版本请提供一下。

     更多内容请参考:http://blog.csdn.net/lyjcn/archive/2009/08/11/4432833.aspx(非常感谢作者。)

      

    布局附表 

     

     

    布局

    Class

    Description

    ExceptionLayout

    只呈现日志事件中异常的文本信息

    Layout2RawLayoutAdapter

    适应于Ilayout接口到IRawLayout

    LayoutSkeleton

    扩展这个抽象类来创建自定义的布局格式

    PatternLayout

    可以通过类型字符串来配置的布局

    PatternLayout.ConverterInfo

    把转换器名字映射为转换器类型的包装类

    RawLayoutConverter

    IrawLayout接口的类型转换器

    RawPropertyLayout

    从日志事件中提取属性值

    RawTimeStampLayout

    从日志事件中提取日期

    RawUtcTimeStampLayout

    从日志事件中提取日期

    SimpleLayout

    很简单的布局

    XmlLayout

    把日志事件格式化为XML元素的布局

    XmlLayoutBase

    把日志事件格式化为XML元素的布局

    XmlLayoutSchemalLog4j

    把日志事件格式化为与log4j结构兼容的XML元素布局

     

     

     

  • 相关阅读:
    Python [Leetcode 350]Intersection of Two Arrays II
    jade学习
    pageX、clientX、screenX、offsetX、layerX、x
    AngularJS--转载
    AngularJS
    超级强大的SVG动画详解
    javascript event对象的clientX,offsetX,screenX,pageX区别
    console的调试方法
    javascript--函数参数与闭包--详解
    如何把你的图标转换成web字体
  • 原文地址:https://www.cnblogs.com/jams742003/p/1620928.html
Copyright © 2020-2023  润新知