zoukankan      html  css  js  c++  java
  • Log4net配置相关

    Logger hierarchy(层次级别)

    Logger都是已经命名的实体。Logger的名称区分大小写并遵循以下规则:

    如果A logger的名称如果是B logger名称的前缀(通过“.”连接),则说A loggerB logger的祖父级。

    如果A logger的名称和B logger的名称之间不存在其他的logger名称,则A loggerB logger的父级。

    例子:A logger名称为“Foo.Bar”,B logger名称为“Foo.Bar.Baz”,AB的父级。名称为“System”的logger是名称为“System.Text.StringBuilder”的祖父级。

    Root logger位于logger层次级别中的顶级。它有例外的三条规则:

    1 Root logger总是存在的。

    2 Root logger不能通过名称或取。

    3 Root logger 有一个默认的Level 值为 Debug

    Logger 可以通过log4net.LogManager类的静态方法GetLogger获取。

    Level值:ALL/DEBUG/INFO/WARN/ERROR/FATAL/OFF

    Level 继承规则:如果一个logger没有定义Level,它的Level值将从它的父级(定义了Level)继承。

    日志纪录请求通过调用logger实例的输出方法实现。这些输出方法有DebugInfoWarnErrorFatal

    通过定义,输出方法决定了日志纪录请求的Level。例如,log是一个logger实例,那么语句log.Info(“..”)的日志纪录请求LevelINFO

    如果日志纪录请求的Levellogger本身定义(或继承)的Level高,则请求是可行的,否则不可行。

    简单规则:如果日志记录请求的LevelLlogger本身定义(或继承)LevelK,当L>=K时,日志纪录请求是可行的。

    Level级别:DEBUG <INFO<WARN<ERROR<FATAL

    通过名称,调用log4net.LogManager.GetLogger方法,可以获取同一个logger的实例引用。这样在配置了一个logger后,不用在代码中传递引用而可以获取同一个logger的引用了。与生物上的亲子关系(父亲总是先于孩子)基本相反,在log4net 里,logger可以被创建和配置成任何顺序。特别的是,一个父级logger可能比子级logger后实例化,但却可以在子级中查找到。

     

    Appender

    Log4net允许日志以不同的方式输出,如:ms sql、文件、控制台或者系统日志等等。

    一个logger可以有多个Appender。每一个可行的日志纪录请求将输出到所有的appender,这些appender是在当前这个logger中引用的,还包括父级logger中引用的。换句话说,appender将在logger的层次级别中添加性的继承。例如在root中定义了一个Console appender,那么所有的logger至少有一个Console appender。如果 A logger有一个File appender,则 A logger以及它的子logger都有两个appender

    Additivity属性默认为true,当设置为false时,appender将采用覆盖的方式,而不再从父级logger中继承。

     

     

    Filters是用来过滤appender能接受的日志信息。

    使用以下filterappender只接受LevelINFOFATAL之间的日志纪录请求。

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

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

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

    </filter>

     

    使用以下filterappender只接受包含子串为“database”的日志纪录。

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

           <param name="StringToMatch" value="database" />

    </filter>

    <filter type="log4net.Filter.DenyAllFilter" />

    第一个filter将会在日志纪录信息中查找“database”,如果找到则不再匹配下面得filterappener接受并纪录该日志。如果没有找到则继续使用第二个filter,该filter将拒绝任何日志信息。

     

    Layouts 用来定制输出格式。

     

    加载配置

    ConfigFile属性:当我们自己定义了一个log4net的配置文件时,可以通过这个属性来指定配置文件。

    ConfigFileExtension属性:当应用程序会编译成不同扩展名称的程序集时,可以使用这个属性。如Sample程序将编译成Sample.exe,则ConfigFileExtension设置为“config”,那么所使用的配置文件名称为:Sample.exe.config。注意不能和ConfigFile属性同时使用。

    Watch属性:在运行期间是否监测配置文件。当值为true时,FileSystemWatcher将用来监视配置文件的内容改变、重命名和删除通知。

     

    为应用程序加载log4net的配置,可以通过在应用程序集中设置属性。

    例如:

    [assembly: log4net.Config.DOMConfigurator(ConfigFile="Sample.config")]

    [assembly: log4net.Config.DOMConfigurator(ConfigFileExtension="config")]

    也可以不使用任何参数,这时将使用应用程序的配置文件。

    [assembly: log4net.Config.DOMConfigurator()]

     

    另一种方式是在代码中使用 DOMConfigurator 

    log4net.Config.DOMConfigurator.Configure(

    new FileInfo("TestLogger.Exe.Config"));

    使用ConfigureAndWatch(..)可以指定一个配置文件并且监视该文件的变化。

     

    PatternLayout

    每一种指定的转换符号都以%开始,后面跟着一个可选的格式符号和一个转换符号。转换符号用来指定输出的数据类型,如Levelloggerdate等。

    例如:转换模型“%-5p [%t]: %m%n

            ILog log = LogManager.GetLogger(typeof(TestApp));

            log.Debug("Message 1");

            log.Warn("Message 2");  

    转换后:

            DEBUG [main]: Message 1

            WARN  [main]: Message 2

    %-5p”表示输出日志纪录请求的Level值,宽度为5个子符,并左对齐。

     

    转换符号列表:

    a

    输出创建日志的AppDomain的名称

    c

    默认输出logger的全名称。后面可跟“{数字}”,则表示输出与数字对应的logger名称级别(从右边开始)。如全名为“a.b.c”,“%c{2}”输出“b.c

    C

    输出调用日志纪录请求的类名。后面可跟“{数字}”,表示输出与数字对应的类名称(包含命名空间,从右边开始)。

    d

    输出日志记录时间,后可跟“{时间格式}”。默认为yyyy-MM-dd HH:mm:ss,fff

    F

    输出调用日志纪录请求的文件全名。(会影响速度)

    l

    输出调用日志纪录请求的一些本地信息。如类和成员名,调用文件和调用声明的代码行数。(极其影响性能)

    L

    输出调用日志纪录请求的声明代码行数。(极其影响性能)

    m

    输出应用程序所要输出的信息。

    M

    输出调用日志纪录请求的成员名称。(极其影响性能)

    n

    输出换行符号

    p

    输出日志请求的Level

    P

     

    r

    输出从应用程序启动开始到日志纪录请求的时间(毫秒)

    t

    输出产生日志的线程名称,如果没有名称则输出线程的编号

    u

    输出当前活动用户的名称。(Principal.Identity.Name

    W

    输出当前活动用户的windows标识。

    x

     

    X

     

    %

    输出一个%

  • 相关阅读:
    用户调查报告
    beta-2阶段组员贡献分分配
    beta阶段140字评论
    11月9号站立会议
    BETA预发布演示视频
    第八周PSP&进度条
    11月8号站立会议
    栈——C语言模拟
    读《弗洛伊德:作家与白日梦》
    《爱的艺术》爱的误解——对象,状态
  • 原文地址:https://www.cnblogs.com/goooto/p/1915983.html
Copyright © 2011-2022 走看看