日志级别是如何工作的
在程序中设置日志级别
SetLevelByMethod.java
运行效果
使用配置文件设置日志级别
log4j.properties
SetLevleByConfig.java
运行结果
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
1 | package demo.level; |
运行效果
1 | 2020-08-03 18:32:58 WARN SetLevelByMethod:17 - Warn Message! |
可以看到,程序只输出WARM
级别和比WARN
更高的级别的日志输出
使用配置文件设置日志级别
Log4j
提供了基于配置文件设置日志级别的功能.当您需要改变调试级别时,只需要修改配置文件即可,不用再去修改代码。
log4j.properties
下面这个例子和上面那个例子功能一样,不过不用使用setLevel(Level.WARN)
方法,只需修改配置文件:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17# 输出到控制台
# Root logger option
#ALL<TRACE<DEBUG<INFO< WARN< ERROR< FATAL< OFF
#log4j.rootLogger=OFF, STDOUT
#log4j.rootLogger=FATAL, STDOUT
#log4j.rootLogger=ERROR, STDOUT
#log4j.rootLogger=WARN, STDOUT
INFO, STDOUT =
#log4j.rootLogger=DEBUG, STDOUT
#log4j.rootLogger=TRACE, STDOUT
#log4j.rootLogger=ALL, STDOUT
# Direct log messages to STDOUT
org.apache.log4j.ConsoleAppender =
System.out =
org.apache.log4j.PatternLayout =
%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n =
SetLevleByConfig.java
1 | package demo.level; |
运行结果
1 | 2020-08-03 18:49:27 INFO SetLevleByConfig:14 - Info Message! |