zoukankan      html  css  js  c++  java
  • Log4j的日志级别分析(转)

    说明:Log4j的日志是有级别的,从低到高顺序为:ALL < DEBUG < INFO < WARN < ERROR < FATAL < OFF,当定义了日志级别为WARN后,那么其比它高的级别(ERROR < FATAL)会打印出来。

    基本使用方法:

    Log4j由三个重要的组件构成:日志信息的优先级,日志信息的输出目的地,日志信息的输出格式。日志信息的优先级从高到低有ERROR、WARN、INFO、DEBUG,分别用来指定这条日志信息的重要程度;日志信息的输出目的地指定了日志将打印到控制台还是文件中;而输出格式则控制了日志信息的显示内容。

    日志信息的优先级

    org.apache.log4j.Level类提供以下级别,但也可以通过Level类的子类自定义级别。

    Level描述
    ALL 各级包括自定义级别
    DEBUG 指定细粒度信息事件是最有用的应用程序调试
    ERROR 错误事件可能仍然允许应用程序继续运行
    FATAL 指定非常严重的错误事件,这可能导致应用程序中止
    INFO 指定能够突出在粗粒度级别的应用程序运行情况的信息的消息
    OFF 这是最高等级,为了关闭日志记录
    TRACE 指定细粒度比DEBUG更低的信息事件
    WARN 指定具有潜在危害的情况

    日志级别是如何工作的?

    级别p的级别使用q,在记录日志请求时,如果p>=q启用。这条规则是log4j的核心。它假设级别是有序的。对于标准级别它们关系如下:ALL < DEBUG < INFO < WARN < ERROR < FATAL < OFF。

    下面的例子明确指出如何可以过滤所有的DEBUG和INFO消息。这个程序使用记录并执行setLevel(Level.X)方法来设置所需的日志记录级别。

    这个例子将打印,除了调试和信息的所有消息:

    import org.apache.log4j.*;
    
    public class LogClass {
       private static final org.apache.log4j.Logger log = Logger.getLogger(LogClass.class);
       public static void main(String[] args) {
          log.setLevel(Level.WARN);
    
          log.trace("Trace Message!");
          log.debug("Debug Message!");
          log.info("Info Message!");
          log.warn("Warn Message!");
          log.error("Error Message!");
          log.fatal("Fatal Message!");
       }
    }

    当编译并运行LogClass程序会产生以下结果:

    Warn Message!
    Error Message!
    Fatal Message!

    使用配置文件设置级别:

    Log4j提供这些可以让程序员自由更改源代码,改变调试级别的配置级别是基于文件设置。

    以下是上面的例子使用 log.setLevel(Level.WARN)方法的配置文件与上面的例子例子功能一样。

    # Define the root logger with appender file
    log = /usr/home/log4j
    log4j.rootLogger = WARN, FILE
    
    # Define the file appender
    log4j.appender.FILE=org.apache.log4j.FileAppender
    log4j.appender.FILE.File=${log}/log.out
    
    # Define the layout for file appender
    log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
    log4j.appender.FILE.layout.conversionPattern=%m%n

    现在,使用下面的程序:

    import org.apache.log4j.*;
    
    public class LogClass {
       private static final org.apache.log4j.Logger log = Logger.getLogger(LogClass.class);
       public static void main(String[] args) {
          log.trace("Trace Message!");
          log.debug("Debug Message!");
          log.info("Info Message!");
          log.warn("Warn Message!");
          log.error("Error Message!");
          log.fatal("Fatal Message!");
       }
    }

    现在,编译和运行上面的程序,得到以下结果在/usr/home/log4j/log.out文件:

    Warn Message!
    Error Message!
    Fatal Message!

    参考:

    http://blog.csdn.net/rogger_chen/article/details/50587920

    http://www.cnblogs.com/castlehappiness/p/4339813.html(以上内容转自此篇文章)

  • 相关阅读:
    mysql基础-01
    Delphi 和键盘有关的API函数(Keyboard Input)
    Delphi System单元-Odd- 判断是否是奇数
    Delphi 键盘API GetKeyState、GetAsyncKeyState -获取键盘 / 按键值Key的状态
    Delphi 全局热键KeyPress 和 热键 API(RegisterHotKey、UnRegisterHotKey、GlobalAddAtom、GlobalDeleteAtom、GlobalFindAtom)
    Delphi XE Android platform uses-permission[2] AndroidManifest.xml 配置
    Delphi XE Android platform uses-permission[1] 权限列表
    Delphi XE Andriod 文件后缀对应MIME类型
    Delphi XE RTL Androidapi 单元
    Delphi XE FMX TFmxObject 类 和 单元
  • 原文地址:https://www.cnblogs.com/EasonJim/p/7797900.html
Copyright © 2011-2022 走看看