史上最简单的log4j2.yml整合教程

今天给大家介绍一下SpringBoot如何集成log4j2日志,不过这个log4j2日志可不是普通的log4j2.xml而是SpringBoot专用的log4j2.yml配置文件。大家也知道在SpringBoot现在的配置文件基本都没有*.xml配置文件了,不是利用注解来就是配置在yml中,所以介绍的log4j2日志也是基于log4j2.yml配置。

1.pom文件添加依赖

还是老套路,先在pom文件中添加log4j2的相关依赖

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<dependencies>

<!--spring-boot-starter-web依赖-->

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-web</artifactId>

<exclusions>

<!-- 切换log4j2日志读取 -->

<exclusion>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-logging</artifactId>

</exclusion>

</exclusions>

</dependency>

<!--log4j2依赖-->

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-log4j2</artifactId>

</dependency>

<!-- 支持识别yml配置 -->

<dependency>

<groupId>com.fasterxml.jackson.dataformat</groupId>

<artifactId>jackson-dataformat-yaml</artifactId>

</dependency>

<!--test测试依赖-->

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-test</artifactId>

<scope>test</scope>

</dependency>

</dependencies>

2.log4j2.yml添加配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
Configuration:

status: warn

Properties: # 定义全局变量

Property: # 缺省配置(用于开发环境)。其他环境需要在VM参数中指定,如下:

- name: log.level.console

value: debug

- name: log.path

value: /opt/logs

- name: project.name

value: test

Appenders:

Console: # 输出到控制台

name: CONSOLE

target: SYSTEM_OUT

ThresholdFilter:

level: ${sys:log.level.console} # “sys:”表示:如果VM参数中没指定这个变量值,则使用本文件中定义的缺省全局变量值

onMatch: ACCEPT

onMismatch: DENY

PatternLayout:

pattern: "%d{yyyy-MM-dd HH:mm:ss}:%5p %10t [%15F:%3L] - %m%n"

RollingFile: # 输出到文件,按照日期输出

- name: ROLLING_FILE

ignoreExceptions: false

fileName: "${log.path}/${project.name}.log"

filePattern: "${log.path}/${project.name}-%d{yyyy-MM-dd}.log"

append: true

PatternLayout:

pattern: "%d{yyyy-MM-dd HH:mm:ss,SSS}:%5p %20t [%50F:%3L] - %m%n"

Policies:

TimeBasedTriggeringPolicy:

modulate: true

interval: 1

DefaultRolloverStrategy:

max: 100

Loggers:

Root:

level: debug

AppenderRef:

- ref: CONSOLE

- ref: ROLLING_FILE

关于配置文件具体参数的作用,大家可以看我的视频介绍(在SpringBoot集成mybatis的时候会一起介绍)或者看一下下面的这篇文章介绍:http://z724130632.iteye.com/blog/2319988

3.测试log4j2.yml配置是否成功

最后我们来写一个测试类来测试一下配置的log4j2.yml是否配置成功,下面来看一下测试控制类代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
/**

*

* @author linzhiqiang

* @date 2018/8/7

*/

@RestController

@RequestMapping("log4j2")

public class Log4j2Controller {

private static final Logger logger = LoggerFactory.getLogger(Log4j2Controller.class);

@RequestMapping("test")

public boolean test(){

logger.trace("trace");

logger.debug("debug");

logger.info("info");

logger.warn("warn");

logger.error("error");

return true;

}

}





结果如下所示:





















从打印的日志可以看出来,我们配置的log4j2.yml已经生效了。

总结:

相对而言这次集成log4j2.yml还是很顺利的,但是有两点是比较坑的:第一点是采用log4j2.yml配置的时候和log4j2.xml配置不大一样,格式上面差距挺大的,最重要的是文档资料相对比较少。第二点是log4j2.yml配置按天数存储日志,一直成功不了,后面才发现log4j2.ym按天存储是按第二天存储,当天不会存储日志我们设置好的日期日志,其实说白了就是filePattern的作用。

更多内容敬请关注:“林老师带你学编程

林老师带你学编程 wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客!