• log4net使用


    之前用了很多次了,觉得还是有必要总结一下。

    log4net整体设计上,分为几部分

    • logger:代表打印的输出者,即这一行打印是有谁打出来的
    • appdender:代表打印的目的地,如打印到文件/数据库/缓存/控制台等等
    • layout:代表打印的格式,可以对logger输出的内容进行格式化

    logger

    log4net的打印输出者即logger,他是有一个字符串作为名字的。在使用中常见的LogManager.GetLogger("xxx"),就是通过名字获取logger。同一个名字在整个程序中只有一个实例。

    log4net打印输出定义了五个level打印等级,由低到高分别是DEBUG>INFO>WARN>ERROR>FATAL,仅当一个logger定义的打印等级,小于或等于程序中输出的打印等级时,打印才会被打出。

    例如,如果一个logger定义为WARN级别,那么用log.Info()输出的内容不会被记录。

    logger的命名与c#中的命名空间格式相同,以点间隔,多个层级,如X.Y.Z。

    之所以采用点间隔方式,是为了对logger定义一个层次的概念如

    • 名为X.Y.Z的logger的parent是X.Y
    • 名为X.Y.Z的logger的descendant的有X和X.Y,以及root
    • root是一个特殊的层次,所有的logger都有有一个root的先祖。

    有了层次关系,就能为logger定义了属性的继承关系:logger的level(打印等级)如果为定义,则继承自他最近的descendant的level。

    而root级别的level有默认值,这样一来所有未定义level的logger都能有一个默认的打印等级。

    Appender

    appdender定义了日志输出的目的地,如文件、数据库、控制台等。

    appdender不同于logger的继承方式,一个logger除了会输出到他自己层级定义的appender中,还会输出到他所有descendant定义的appender中。除非在中间某一级将“Additivity Flag”置为false(置为false的一级仍会被child继承,单他的上一级不再会被继承)。

    Layout

    layout定义了日志的格式化输出方式。

    例如一个PatternLayout,定了输出格式为

    %timestamp [%thread] %-5level %logger - %message%newline

    那么输出的内容格式样例则为:

    176 [main] INFO  Com.Foo.Bar - Located nearest gas station.

    未完待续。。

  • 相关阅读:
    Django模板语言进阶
    ORM基础之ORM介绍和基础操作
    ORM关于表那些事
    ORM之基础操作进阶
    ORM基础之字段及其参数介绍
    AJAX初识(原生JS版AJAX和Jquery版AJAX)
    AJAX异步、sweetalert、Cookie和Session初识
    在一个千万级的数据库查寻中,如何提高查询效率?
    A fatal error has been detected by the Java Runtime Environment(jdk 1.6的一个BUG)
    外网映射工具地址
  • 原文地址:https://www.cnblogs.com/mosakashaka/p/12608094.html
Copyright © 2020-2023  润新知