Log4j 配置

接下来简单讲解一下 Log4j 的配置,因为最近的学习当中会使用到,所以在这里记录一下

前置操作

下载

通过 maven 进行拉取相关的依赖

1
2
3
4
5
6
<!-- https://mvnrepository.com/artifact/log4j/log4j -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>

创建 log4j.properties 文件

src/main/resources 目录下创建 log4j.properties

配置文件解析

根配置 [rootLogger]

1
log4j.rootLogger=<level>,appenderName ...

level 表示日志等级

appenderName 表示输出的位置,可以是一个或多个

比如以下配置就是将 DEBUG 日志等级的信息输出到控制台和文件

1
log4j.rootLogger=DEBUG,Console,File

补充:ConsoleFile 可以任意取名,只需要跟后面的 log4j.appender.xxxxxx 部分对应即可

日志等级

ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF

级别越低包含内容越多

级别描述
ALL所有级别的信息
TRACE比 DEBUG 更详细的信息
DEBUG调试信息
INFO普通信息
WARN可能会出现潜在错误的警告信息
ERROR不影响系统的继续运行的错误信息
FATAL将会导致应用程序的退出的严重错误事件信息
OFF用于关闭所有日志记录

输出类型 [appender]

类型描述
org.apache.log4j.ConsoleAppender控制台
org.apache.log4j.FileAppender文件
org.apache.log4j.DailyRollingFileAppender每天产生一个日志文件
org.apache.log4j.RollingFileAppender文件大小到达指定尺寸的时候产生一个新的文件
org.apache.log4j.WriterAppender将日志信息以流格式发送到任意指定的地方

使用方式大概如下

1
2
3
4
5
log4j.rootLogger=DEBUG,Console,File
# 控制台输出
log4j.appender.Console=org.apache.log4j.ConsoleAppender
# 文件输出
log4j.appender.File=org.apache.log4j.FileAppender

信息格式 [layout]

格式描述
org.apache.log4j.HTMLLayout输出 HTML 表格代码
org.apache.log4j.PatternLayout自定义格式输出
org.apache.log4j.SimpleLayout输出级别和信息
org.apache.log4j.TTCCLayout输出线程、级别、类名、信息

使用方法如下

1
2
3
# 控制台输出,信息格式是 org.apache.log4j.SimpleLayout
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.SimpleLayout

输出信息大概如下

1
2
INFO - xxxx
DEBUG - xxxx

自定义格式的用法

org.apache.log4j.PatternLayout 的格式

格式描述
%m消息
%n换行
%d时间,可以指定格式,如 %d{yyyy-MM-dd HH:mm:ss,SSS}
%t线程名
%p输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
%c类名
%M方法名
%r耗费时间,毫秒
%l代码所在位置

用法如下

1
2
3
4
5
# 控制台输出,信息格式是 org.apache.log4j.PatternLayout
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
# 通过 ConversionPattern 设置属性
log4j.appender.Console.layout.ConversionPattern=%d{HH:mm:ss} [%p] %m%n

输出信息大概如下

1
2
HH:mm:ss [INFO] xxxx
HH:mm:ss [DEBUG] xxxx

输出等级 [Threshold]

相当于过滤,只输出指定级别的内容到指定位置

比如说控制台中只输出 DEBUG 级别的信息

1
2
3
4
5
6
# 文件输出
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d{HH:mm:ss} [%p] %m%n
# 设置级别
log4j.appender.Console.Threshold=DEBUG

补充:Threshold 的等级不能比根配置 log4j.rootLogger 低级,所以尽量使用较低的等级,【回顾日志等级

追加内容-[Append]

往旧的日志文件中追加内容

如果为 true 表示开启,会将新的内容追加到旧的日志文件

如果为 false 表示关闭,会将新的内容覆盖到旧的日志文件

默认是 true

1
2
3
4
5
log4j.appender.File=org.apache.log4j.FileAppender
log4j.appender.File.layout=org.apache.log4j.PatternLayout
log4j.appender.File.layout.ConversionPattern=%d{HH:mm:ss} [%p] %m%n
# 开启追加内容
log4j.appender.File.Append=true

内容补充

MaxFileSize 设置日志文件大小,仅 RollingFileAppender 可用

1
2
3
4
5
6
log4j.appender.File=org.apache.log4j.RollingFileAppender
log4j.appender.File.layout=org.apache.log4j.PatternLayout
log4j.appender.File.layout.ConversionPattern=%d{HH:mm:ss} [%p] %m%n
# 输出大小为 4MB
log4j.appender.File.MaxFileSize=4MB
log4j.appender.File.Append=true

File 设置日志文件输出位置

1
2
3
4
5
6
7
8
9
10
11
12
log4j.rootLogger=DEBUG,ErrorFile

# error 日志
log4j.appender.ErrorFile=org.apache.log4j.RollingFileAppender
log4j.appender.ErrorFile.layout=org.apache.log4j.PatternLayout
log4j.appender.ErrorFile.layout.ConversionPattern=%d{HH:mm:ss} [%p] %m%n
log4j.appender.ErrorFile.MaxFileSize=4MB
# 输出位置
log4j.appender.ErrorFile.File=/logs/ERROR.log
# 等级不能低于根配置
log4j.appender.ErrorFile.Threshold=Error
log4j.appender.ErrorFile.Append=true

参考自以下内容

哔哩哔哩:https://www.bilibili.com/video/BV1jt411T7zt