多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
## 一、引入maven依赖 Spring Boot默认使用LogBack,但是我们没有看到显示依赖的jar包,其实是因为所在的jar包spring-boot-starter-logging都是作为spring-boot-starter-web或者spring-boot-starter依赖的一部分。 如果这里要使用Log4j2,需要从spring-boot-starter-web中去掉spring-boot-starter-logging依赖,同时显示声明使用Log4j2的依赖jar包,具体如下: ![](https://img.kancloud.cn/cd/62/cd62e97469c91479401236d8de14a680_870x496.png) ~~~ <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-log4j2</artifactId> </dependency> ~~~ 另外log4j是之前使用比较广泛的软件,容易与log4j2发生冲突,如果冲突将它从相应的软件里面排除掉 如图启动时发生冲突 ![](https://img.kancloud.cn/52/89/52894cb421182b7f532bbe1a5dfbfc07_1666x218.png) 利用mavenhelper插件搜索log4j发现和dozer的冲突 ![](https://img.kancloud.cn/40/0d/400d830d4e1eb26eb48dc925bf3e430e_653x572.png) 去掉dozer的log4j依赖 ![](https://img.kancloud.cn/b2/ee/b2eeb3c037ea47c357795d4503f90875_780x370.png) ~~~ <dependency> <groupId>net.sf.dozer</groupId> <artifactId>dozer</artifactId> <version>5.4.0</version> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </exclusion> </exclusions> </dependency> ~~~ 再次启动发现冲突消失! ![](https://img.kancloud.cn/a7/17/a71795f721011932c3d2269d1090f9e2_1017x337.png) ## 二、添加配置文件log4j2.xml 在resources目录下新建一个log4j2.xml文件。 ~~~ <?xml version="1.0" encoding="UTF-8"?> <configuration> <Appenders> <Console name="CONSOLE" target="SYSTEM_OUT"> <PatternLayout charset="UTF-8" pattern="[%-5p] %d %c - %m%n" /> </Console> <RollingFile name="runtimeFile" fileName="./logs/boot-launch.log" filePattern="./logs/boot-launch-%d{yyyy-MM-dd}.log" append="true"> <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS Z}\t%level\t%class\t%line\t%thread\t%msg%n"/> <Policies> <TimeBasedTriggeringPolicy/> </Policies> <!-- 此行以下为自动清理日志的配置 --> <DefaultRolloverStrategy> <Delete basePath="./logs"> <!-- glob 项为需要自动清理日志的pattern --> <IfFileName glob="*.log"/> <!-- 30d 表示自动清理掉30天以前的日志文件 --> <IfLastModified age="30d"/> </Delete> </DefaultRolloverStrategy> <!-- 此行以上为自动清理日志的配置 --> </RollingFile> </Appenders> <Loggers> <root level="info"> <AppenderRef ref="CONSOLE" /> <AppenderRef ref="runtimeFile" /> </root> </Loggers> </configuration> ~~~ >注意:关于log4j2的定时删除如果filePattern的粒度为HH,那么在中如果age=30d则不生效 ## 三、修改application.yml配置 但是这样还不够,Spring Boot并不知道log4j2.xml是干嘛的,需要通过在application.properties文件中显示声明才行 ![](https://img.kancloud.cn/ad/e4/ade46e077b066489458aa46752a5b207_605x283.png) ~~~ logging: config: classpath:log4j2.xml ~~~ >不同环境的配置文件需要创建各自的log4j2.xml,并在各自的application.properties文件中显示声明 ![](https://img.kancloud.cn/21/dd/21dd46ad22736c9951fef03bf26e4f3d_1112x255.png) ## 四、测试一下 删除掉logback.xml文件测试, 拿9.2章节的Controller测试一下 ![](https://img.kancloud.cn/3c/4a/3c4afe783ef7359d1df7f479b57db88a_1766x458.png) log文件生成在程序目录下 ![](https://img.kancloud.cn/0d/ed/0ded1e42390c8fe855f30f079fb00e7b_533x220.png) ![](https://img.kancloud.cn/94/16/9416832803f9cb081d2001dc67c3b616_1166x504.png)