Log4j 日志级别Level类
org.apache.Log4j.Level
类定义了日志级别,您可通过继承Level
类定制自己的级别。
级别 |
描述 |
OFF |
最高级别,用于关闭日志。 |
FATAL |
指明非常严重的错误事件,可能会导致应用终止执行。 |
ERROR |
指明错误事件,但应用可能还能继续运行。 |
WARN |
指明潜在的有害状况。 |
INFO |
指明描述信息,从粗粒度上描述了应用运行过程。 |
DEBUG |
指明细致的事件信息,对调试应用最有用。 |
TRACE |
比DEBUG 级别的粒度更细。 |
ALL |
所有级别,包括定制级别。 |
日志级别是如何工作的
在一个级别为q的logger
对象中,一个级别为p的日志请求在p >= q
的情况下是开启的。该规则是Log4j
的核心,它假设级别是有序的。
对于标准级别,其顺序为:ALL
<TRACE
<DEBUG
<INFO
<WARN
<ERROR
<FATAL
<OFF
。
例如设置级别为DEBUG
,则比DEBUG
高的INFO
,WARN
,ERROR
,FATAL
都是开启的.
在程序中设置日志级别
使用logger
对象的setLevel(Level.级别)
方法可以设置期望的日志级别:
SetLevelByMethod.java
/Log4jDemo/src/demo/level/SetLevelByMethod.java1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| package demo.level;
import org.apache.log4j.Level; import org.apache.log4j.Logger;
public class SetLevelByMethod { private static Logger log = Logger.getLogger(SetLevelByMethod.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!"); } }
|
运行效果
1 2 3
| 2020-08-03 18:32:58 WARN SetLevelByMethod:17 - Warn Message! 2020-08-03 18:32:58 ERROR SetLevelByMethod:18 - Error Message! 2020-08-03 18:32:58 FATAL SetLevelByMethod:19 - Fatal Message!
|
可以看到,程序只输出WARM
级别和比WARN
更高的级别的日志输出
使用配置文件设置日志级别
Log4j
提供了基于配置文件设置日志级别的功能.当您需要改变调试级别时,只需要修改配置文件即可,不用再去修改代码。
log4j.properties
下面这个例子和上面那个例子功能一样,不过不用使用setLevel(Level.WARN)
方法,只需修改配置文件:
/Log4jDemo/Log4jConfig/Level/log4j.properties1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
log4j.rootLogger=INFO, 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=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
|
SetLevleByConfig.java
/Log4jDemo/src/demo/level/SetLevleByConfig.java1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| package demo.level;
import org.apache.log4j.Logger;
public class SetLevleByConfig { private static Logger log = Logger.getLogger(SetLevleByConfig.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!"); } }
|
运行结果
1 2 3 4
| 2020-08-03 18:49:27 INFO SetLevleByConfig:14 - Info Message! 2020-08-03 18:49:27 WARN SetLevleByConfig:15 - Warn Message! 2020-08-03 18:49:27 ERROR SetLevleByConfig:16 - Error Message! 2020-08-03 18:49:27 FATAL SetLevleByConfig:17 - Fatal Message!
|