编程那点事编程那点事

专注编程入门及提高
探究程序员职业规划之道!

Log4j日志级别详解

Log4j日志级别从高到低分别为:

8:OFF(Integer.MAX_VALUE),用户关闭所有日志记录

7:FATAL(50000),导致应用程序退出的严重错误

6:ERROR(40000),虽然发生了错误但不影响系统的继续运行

5:WARN(30000),会出现潜在的错误情形

4:INFO(20000),在粗粒度级别上,强调应用程序的运行全程

3:DEBUG(10000),在细粒度级别上,对调试应用程序非常有帮助

2:TRACE(5000),

1:ALL(Integer.MIN_VALUE),打开所有日志记录

上述日志级别都定义在org.apache.log4j.Level类中,在org.apache.log4j.Priority类中,定义了各日志级别的整型值,通过各日志级别定义的整型值就很好理解优先级的概念了,比如我Log4j日志级别定义成INFO,那么INFO、WARN、ERROR、FATAL级别的信息会打印出来,DEBUG、TRACE就不会被打印出来。即只有大于等于定义的日志级别的信息才会显示出来!

Log4j官网建议我们在使用Log4j日志级别的过程中,只使用ERROR、WARN、INFO、DEBUG,讲了这么多,是不是不是很直观?那么通过程序代码来看看吧

以下是代码结构,注意,我只引用了log4j-1.2.17这个包,log4j2我们后期的文章会讲解到的。

Log4j日志级别 代码结构

具体代码如下

import org.apache.log4j.Level;
import org.apache.log4j.Logger;

public class Test {

	private static Logger logger = Logger.getLogger(Test.class);
	
	public static void main(String[] args) {
	logger.setLevel(Level.TRACE);
		
	//记录Trace级别信息
        logger.trace("这是Trace级别信息!【"+Level.TRACE_INT+"】");
        //记录Debug级别信息
        logger.debug("这是Debug级别信息!【"+Level.DEBUG_INT+"】");
        //记录Info级别信息
        logger.info("这是Info级别信息!【"+Level.INFO_INT+"】");
        //记录Warn级别信息
        logger.warn("这是Warn级别信息!【"+Level.WARN_INT+"】");
        //记录Error级别信息
        logger.error("这是Error级别信息!【"+Level.ERROR_INT+"】");
        //记录Fatal级别信息
        logger.fatal("这是Fatal级别信息!【"+Level.FATAL_INT+"】");
        
	}
}

输出结果

[TRACE] 2017-03-10 10:44:06,181 method:Test.main(Test.java:12)

这是Trace级别信息!【5000】

[DEBUG] 2017-03-10 10:44:06,183 method:Test.main(Test.java:14)

这是Debug级别信息!【10000】

[INFO ] 2017-03-10 10:44:06,183 method:Test.main(Test.java:16)

这是Info级别信息!【20000】

[WARN ] 2017-03-10 10:44:06,183 method:Test.main(Test.java:18)

这是Warn级别信息!【30000】

[ERROR] 2017-03-10 10:44:06,183 method:Test.main(Test.java:20)

这是Error级别信息!【40000】

[FATAL] 2017-03-10 10:44:06,183 method:Test.main(Test.java:22)

这是Fatal级别信息!【50000】

你可以通过调整logger.setLevel(Level.TRACE)更直观的理解Log4j的日志级别。

需要注意的是,虽然我们在程序里面定义了日志的输出级别,但是,还是需要有log4j.properties文件的。不然,程序会报以下错误信息

log4j:WARN No appenders could be found for logger (Test).

log4j:WARN Please initialize the log4j system properly.

log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

log4j.properties文件的具体内容如下

log4j.rootLogger = debug,stdout

log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

好了,通过以上的文章,理解Log4j日志级别是不是很容易?

未经允许不得转载: 技术文章 » Java编程 » Log4j日志级别详解