前面我们讲了log4j日志级别的定义。其中讲到了日志级别顺序这个概念。OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL。
简单来说,就是如果我的日志级别定义为INFO,那么DEBUG、TRACE的信息是不显示的。同理,定义为ERROR,那么WARN、INFO、DEBUG、TRACE都不显示了,下面我们通过程序向大家展示log4j日志级别是如何工作的。
public class Log4jDemo { static Logger logger = Logger.getLogger(Log4jDemo.class,2); public static void main(String[] args){ logger.setLevel(Level.INFO,2); logger.fatal("Fatal Message!",2); logger.error("Error Message!",2); logger.warn("Warn Message!",2); logger.info("Info Message!",2); logger.debug("Debug Message!",2); logger.trace("Trace Message!",2); } }
我们日志级别定义为INFO,输出结果为
[FATAL] 2016-03-04 16:55:32,916(0) --> [main] com.trs.log.Log4jDemo.main(Log4jDemo.java:16): Fatal Message!
[ERROR] 2016-03-04 16:55:32,918(2) --> [main] com.trs.log.Log4jDemo.main(Log4jDemo.java:17): Error Message!
[WARN ] 2016-03-04 16:55:32,919(3) --> [main] com.trs.log.Log4jDemo.main(Log4jDemo.java:18): Warn Message!
[INFO ] 2016-03-04 16:55:32,919(3) --> [main] com.trs.log.Log4jDemo.main(Log4jDemo.java:19): Info Message!
下面我们把日志级别设置为ERROR,自己先想下应该输出什么?
[FATAL] 2016-03-04 16:57:12,033(1) --> [main] com.trs.log.Log4jDemo.main(Log4jDemo.java:16): Fatal Message!
[ERROR] 2016-03-04 16:57:12,035(3) --> [main] com.trs.log.Log4jDemo.main(Log4jDemo.java:17): Error Message!
log4j是如何工作的,是不是很好理解?