Log4net

  • web.config/app.config
    • root
    • logger
      • Logger是直接和应用程序交互的组件。Logger只是产生日志,然后由它引用的Appender记录到指定的媒介,并由Layout控制输出格式。
      • Logger提供了多种方式来记录一个日志消息,也可以有多个Logger同时存在。每个实例化的Logger对象对被log4net作为命名实体(Named Entity)来维护。log4net使用继承体系,也就是说假如存在两个Logger,名字分别为a.b.c和a.b。那么a.b就是a.b.c的祖先。每个Logger都继承了它祖先的属性。所有的Logger都从Root继承,Root本身也是一个Logger。
      • 日志的等级,它们由高到底分别为:OFF > FATAL > ERROR > WARN > INFO > DEBUG > ALL
      • Logger实现的ILog接口,ILog定义了5个方法(Debug,Inof,Warn,Error,Fatal)分别对不同的日志等级记录日志。这5个方法还有5个重载,可以穿exception作为参数。
    • appender
      • 用来定义日志的输出方式,即日志要写到那种介质上去。较常用的Log4net已经实现好了,直接在配置文件中调用即可,可参见上面配置文件例子;当然也可以自己写一个,需要从log4net.Appender.AppenderSkeleton类继承。它还可以通过配置Filters和Layout来实现日志的过滤和输出格式。
      • 如FileAppender,ConsoleAppender等
    • layouts
      • Layout用于控制Appender的输出格式,可以是线性的也可以是XML。
      • 一个Appender只能有一个Layout。
      • 最常用的Layout应该是经典格式的PatternLayout,其次是SimpleLayout,RawTimeStampLayout和ExceptionLayout。然后还有IRawLayout,XMLLayout等几个,使用较少。Layout可以自己实现,需要从log4net.Layout.LayoutSkeleton类继承,来输出一些特殊需要的格式,在后面扩展时就重新实现了一个Layout。
      • SimpleLayout简单输出格式,只输出日志级别与消息内容。
      • RawTimeStampLayout 用来格式化时间,在向数据库输出时会用到。样式如“yyyy-MM-dd HH:mm:ss“
      • ExceptionLayout需要给Logger的方法传入Exception对象作为参数才起作用,否则就什么也不输出。输出的时候会包含Message和Trace。
      • PatterLayout使用最多的一个Layout,能输出的信息很多,使用方式可参见上面例子中的配置文件。
    • filters
      • 使用过滤器可以过滤掉Appender输出的内容。过滤器通常有以下几种:
      • DenyAllFilter 阻止所有的日志事件被记录
      • LevelMatchFilter 只有指定等级的日志事件才被记录
      • LevelRangeFilter 日志等级在指定范围内的事件才被记录
      • LoggerMatchFilter 与Logger名称匹配,才记录
      • PropertyFilter 消息匹配指定的属性值时才被记录
      • StringMathFilter 消息匹配指定的字符串才被记录
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </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] "/>
        <param name="Footer" value="[Footer] "/>
        <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>
  • 代码
    • ILog log = LogManager.GetLogger(“className”);
    • log.Warn(“”);

posted on 2021-06-23 16:34  碎羽love星谊  阅读(57)  评论(0编辑  收藏  举报

导航