zoukankan      html  css  js  c++  java
  • Log4net快速索引参考

    官方项目地址:The Apache log4net project
    本文内容仅为相关项参考,不进行具体使用讨论
    另转载请注明出处

    Log4net快速索引参考

    Log4net主要有以下三个部件:

    • loggers —— 记录器:开发者通过它来写日志
    • appenders —— 输出位置/目标控制器:通过它控制日志需要记录在哪些地方
    • layouts —— 输出格式控制器:通过它控制日志的输出格式或内容

    注意事项:在使用配置文件(App.config)处理log4net时,需要在AssemblyInfo.cs文件中加上 [assembly: log4net.Config.XmlConfigurator(Watch = true)],否则无法输出;
    当然这不是唯一解决方法(但应该是最简单方便的了),更多方法见官方文档:Apache log4net™ Manual - Configuration


    loggers

    日志级别

    标识日志的重要性。

    Log4net默认提供以下5个级别:

    • DEBUG —— 调试使用,如记录一些变量的值
    • INFO —— 一般信息,如记录一些进度情况
    • WARN —— 警告信息,如记录可忽略的异常信息
    • ERROR —— 错误信息,如记录一些错误异常
    • FATAL —— 致命错误信息,如记录软件崩溃信息

    重要/严重程度:DEBUG < INFO < WARN < ERROR < FATAL.

    以下为示例使用:

    ILog log = LogManager.GetLogger("logname");
    log.Info("message");
    

    日志记录控制

    即表示日志是否需要记录

    与日志级别相比,多了以下两个等级:

    其他等级按照其重要程度控制。

    • ALL —— 表示所有日志都需要记录
    • OFF —— 表示所有日志都不需要记录,即关闭日志记录

    此内容常在配置文件中配置,示例如下:

    <logger name="yourlogname">
        <level value="INFO" />
    </logger>
    
    ILog log = LogManager.GetLogger("yourlogname");
    log.Info("test");
    

    注意:日志记录级别的控制还可以在<root>元素内控制所有记录器的记录级别。


    appenders

    控制输出目标位置

    常用的输出目标控制器主要有以下两个:

    • log4net.Appender.ConsoleAppender —— 用于输出到控制台,调试期间使用频率较高
    • log4net.Appender.FileAppender —— 用于记录到文件,软件应用发布后使用频率较高

    当然,log4net还提供了一系列的控制器,具体内容见文末表格。


    layouts

    控制日志输出格式及要输出的内容

    最常用的输出格式控制器为:log4net.Layout.PatternLayout

    log4net.Layout.PatternLayout

    以下为常用的格式化参数——ConversionPattern:

    • %m(message):输出的日志消息,如ILog.Debug(…)输出的一条消息
    • %n(new line):换行
    • %d(datetime):输出当前语句运行的时刻
    • %r(run time):输出程序从运行到执行到当前语句时消耗的毫秒数
    • %t(thread id):当前语句所在的线程ID
    • %p(priority): 日志的当前优先级别,即DEBUG、INFO、WARN…等
    • %c(class):当前日志对象的名称,即类名称或日志记录器的名称
    • %L:输出语句所在的行号
    • %F:输出语句所在的文件名
    • %-数字:表示该项的最小长度,如果不够,则用空格填充

    其示例如下,如PatternLayout的输出格式定义为:

    %r [%t]%-5p %c - %m%n
    

    则最终将输出内容为:

    176 [main] INFO  org.foo.Bar - Located nearest gas station.
    

    关于log4net提供的更多输出格式控制器见文末表格。


    其他内容

    必须元素

    <root>在配置文件中必须添加

    过滤器-Filters

    用于精确控制不同输出目标控制器,如两个输出目标控制器可以使用不同的日志输出级别。


    常用的完整示例

    <?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="FileAppender" />
                <appender-ref ref="ConsoleAppender" />
            </root>
    
            <logger name="yourlognameorfullclassname">
                <level value="DEBUG"/>
            </logger>
    
            <appender name="FileAppender" type="log4net.Appender.FileAppender">
                <file value="log-file.txt" />
                <appendToFile value="true" />
                <layout type="log4net.Layout.PatternLayout">
                    <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
                </layout>
            </appender>
    
            <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
                <layout type="log4net.Layout.PatternLayout">
                    <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
                </layout>
            </appender>
        </log4net>
    </configuration>
    

    更多示例配置见官方文档:Apache log4net™ Config Examples


    参考表格

    appenders-输出目标控制器

    内容见官方文档:Appenders

    layouts-输出格式控制器

    内容见官方文档:Layouts

    Filters-过滤器

    内容见官方文档:Filters


    掘:奇葩史

  • 相关阅读:
    定位
    浮动
    标准文档流
    盒模型
    CSS继承性和层叠性
    微信公众平台-信息的获取
    信息系统项目管理师-整体介绍
    Dijkstra算法 c语言实现
    windows下c语言获取程序当前的执行目录,读文件的代码片
    网络流问题,及其代码
  • 原文地址:https://www.cnblogs.com/huaxia283611/p/log4netIndex.html
Copyright © 2011-2022 走看看