zoukankan      html  css  js  c++  java
  • log4net 配置

    概述

    log4net是一个开源日志记录组件。用log4net可以方便地将日志信息记录到文件、控制台、Windows事件日志和数据库中。其日志级别从低到高有:

    • ALL
    • DEBUG
    • INFO
    • WARN
    • ERROR
    • FATAL
    • OFF

    一个实例

    先来看一个例子,了解下log4net是如何工作的。

     1 using log4net;
     2 
     3 namespace Log4net_tutorial
     4 {
     5     class Program
     6     {
     7         private static readonly ILog log = LogManager.GetLogger(typeof(Program));
     8 
     9         static void Main(string[] args)
    10         {
    11             log.Info("first log info...");
    12 
    13             log.Info("second log info...");
    14         }
    15     }
    16 }

    log4net.config文件中的配置如下:

    <configuration>
      <log4net>
        <appender name="Console" type="log4net.Appender.ConsoleAppender">
          <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date{yyyy-MM-dd} [%thread] %-5level - %message%newline" />
          </layout>
        </appender>
        <root>
          <level value="DEBUG" />
          <appender-ref ref="Console" />
        </root>
      </log4net>
    </configuration>

    运行结果如图:

    从这个例子中可以看出log4net的使用非常简单,在配置文件中配置相应的信息后,只需要很少的代码就可以轻松的输入日志。

    配置文件

    配置程序集

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

    log4net的XmlConfiguratorAttribute 配置允许三个属性:

    • ConfigFile 

        配置文件的名字,程序会从程序的根目录(AppDomain.CurrentDomain.BaseDirectory)下找该名字的文件。该属性不能和ConfigFileExtension一块使用。

    • ConfigFileExtension

        指定配置文件的后缀名,如果当前文件为TestApp.exe,该属性设置成了config,则程序会从当前程序的根目录(AppDomain.CurrentDomain.BaseDirectory)找一个名为TestApp.exe.config的配置文件。

    • Watch

        如果该属性设置成true,则表示每次log4net的配置文件有改动时,都会重新加载配置文件。

    log4net的结构

      要使用log4net,需要在配置文件的顶级节点<configuration>下增加<log4net>子节点。log4net主要有Appender、Layout和Logger等组件。

    • Appendr(附着器)

        如下是一个控制台输出日志的Appender的例子,

    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender" >
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline" />
        </layout>
    </appender>

        Appender有两个必要的属性:nametype。name属性会在<appender-ref>节点中作为调用Appender的标识。type除了上边提到的控制台输出日志的log4net.Appender.ConsoleAppender,常用的还有 log4net.Appender.FileAppender(输出日志到文本文件)、log4net.Appender.AdoNetAppender(输出日志到数据库),更多Appender的信息见Apache上的log4net官方文档

    • Layout(布局)

        Layout是Appender的一个子节点,用来控制输出日志的内容和格式等信息。如下图的例子

    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline" />
    </layout>
    • Logger(记录器)

        Logger有两种:Root Logger和普通的Logger。

        root Logger:

    <root>
        <level value="INFO" />
        <appender-ref ref="ConsoleAppender" />
    </root>

        普通的Logger:

    <logger name="LoggerName">
        <level value="DEBUG" />
        <appender-ref ref="ConsoleAppender" />
    </logger> 

      在调用log4net的时候,用到的GetLogger,如果其中的参数可以匹配到logger的name属性,则使用匹配的Logger,如果干没有找到匹配的name则使用Root Logger

    参考资料:

    1. http://logging.apache.org/log4net/release/manual/configuration.html
    2. Log4Net使用详解(续)
  • 相关阅读:
    elasticsearch + python
    Django中的监控组件Prometheus
    MySQL索引原理以及最左前缀原则
    Insert ignore,还是insert replace还是insert on duplicate key update区别
    PyTorch中Tensor与numpy数据之间时共享的条件:
    在Numpy中numpy.nan显示成-9223372036854775808的缘故
    mac上安装pil报错: ERROR: Could not find a version that satisfies the requirement pil (from versions: none):
    OSError: [Errno 48] Address already in use
    curl: (7) Failed to connect to raw.githubusercontent.com port 443: Connection refused
    在实际项目中使用git推代码踩过的坑
  • 原文地址:https://www.cnblogs.com/ldm1989/p/3746251.html
Copyright © 2011-2022 走看看