引言
对于一个线上程序或者服务而言,重要的是要有日志输出,这样才能方便运维。而日志的输出需要有一定的规划,如日志命名、日志大小,日志分割的文件个数等。在Spring的框架下,我们可以使用 log4j
来进行日志的设置,高版本的SpringBoot会使用 log4j2
。
介绍
log4j2概述
截取官网的原话:Apache Log4j 2 is an upgrade to Log4j that provides significant improvements over its predecessor, Log4j 1.x, and provides many of the improvements available in Logback while fixing some inherent problems in Logback’s architecture.
Log4j其实可以理解为 log for java
,所以是java的日志框架,提供日志服务,而Log4j 2是Log4j的升级版本,性能比 logback
好。
日志级别优先级从低到高:ALL、DEBUG、 INFO、 WARN、 ERROR、FATAL、 OFF
。一般官网建议就使用 DEBUG、INFO、WARN和ERROR
这四个,但是我们可以加一个 ALL
最低级别的来进行总日志的输出。日志的登记越高,打出的日志越少。
log4j2的pom依赖
1 | <dependency> |
log4j2.xml配置路径
默认路径
引入 log4j2
依赖后,默认在 src/main/resources目录
下加入 log4j2.xml配置文件
对日志进行配置即可,然后在 application.yml
中进行访问路径的配置。
示例如下:
- log4j2.xml部署位置
- yml配置
1 | logging: |
自定义部署位置
当然我们也可以在微服务部署的 config/
目录下放置,然后在 application.yml
中进行访问路径的配置。
示例如下:
- log4j2.xml部署位置
1
2
3
4
5
6[userA@linux01 config]$ pwd
/home/userA/SpringBoot/micro-service01/config
[userA@linux01 config]$ ll
total 24
-rwxr-xr-x 1 userA userA 5938 Sep 9 16:30 application.yml
-r-------- 1 userA userA 8342 Sep 8 16:33 log4j2.xml - yml配置
1 | logging: |
log4j2.xml配置详解
xml配置模板
1 |
|
配置参数详解
Configuration
根节点 Configuration
中有两个常用的属性:status和monitorInterval。如:<Configuration status="WARN" monitorInterval="30">
属性:
status
:是用于指定log4j的级别;monitorInterval
:是用于指定log4j自动重新检测读取配置内容的间隔时间,单位为秒(s),最小值为5秒。
Properties
1 | <Configuration status="warn" name="MyApp" packages=""> |
变量配置,如模板中的 <property name="LOG_HOME">./service-logs</property>
,我们可以配置日志的路径。后续日志存放的前缀路径即为 ./service-logs
下。
Appenders
Console
1 | <Configuration status="warn" name="MyApp" packages=""> |
Console节点用于定义输出控制台的Appender。
属性:
name
:用于指定Appender的名称;target
:用于指定输出目标,一般是SYSTEM_OUT
或SYSTEM_ERR
,默认是SYSTEM_OUT
。
节点:
PatternLayout
:用于指定输出格式,不设置的话,默认为:%m%n
。
File
1 | <Configuration status="warn" name="MyApp" packages=""> |
File节点用于将日志输出到指定文件。
属性:
name
:用于指定Appender的名称;fileName
:用于指定日志文件的全路径。
节点:
PatternLayout
:用于指定输出格式,不设置的话,默认为:%m%n
。
RollingFile
1 | <Configuration status="warn" name="MyApp" packages=""> |
RollingFile节点用于实现日志文件滚动更新。
属性:
name
:用于指定Appender的名称;fileName
:用于指定日志文件的全路径;filePattern
:用于指定分割文件的日志全路径(命名规则)。
节点:
PatternLayout
:用于指定输出格式,不设置的话,默认为:%m%n
;Policies
:设置日志文件切割参数;TimeBasedTriggeringPolicy
:基于时间间隔触发的滚动策略;SizeBasedTriggeringPolicy
:基于日志文件大小触发的滚动策略;DefaultRolloverStrategy
:设置默认策略。
Loggers
1 | <Configuration status="warn" name="MyApp" packages=""> |
节点:
Root
:用于指定项目的根日志;Logger
:用于指定日志的形式,指定不同包的日志级别。