特别提醒:Spring Boot 只有1.3.x和1.3.x以下版本才支持log4j的日志配置,1.3.x以上版本只支持log4j2,logback的日志配置
SpringBoot默认使用LogBack作为日志框架
由于之前一直使用Log4j日志框架
所以就想着试一下在SpringBoot环境下切换使用log4j2记录日志
首先排除SpringBoot自带的log框架依赖,再引入Log4j框架的依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!--先排除自带的log支持-->
<exclusions>
<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>
</dependencies>
在classpath下创建log4j2-spring.xml 或者 log4j2.xml文件,log4j2框架会自动加载到
下面是一个log4j2.xml文件内容,都有具体的标签讲解
<?xml version="1.0" encoding="UTF-8"?> <!-- fileName:输出路径 filePattern:命名规则(回滚的新文件命名规则) -->
<RollingFile name="err" fileName="c:/mylog/my/info/iot-info-2019-10-18.log"
filePattern="logs/err-%d{yyyy-MM-dd}-%i.log">
<Filters>
<!-- 大于等于该级别,匹配接收,不匹配拒绝 -->
<ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
</Filters>
<!-- 输出格式 -->
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5p] [%F:%M:%L] : %m%n"/>
<Policies>
<!-- TimeBasedTriggeringPolicy 1的单位是前面命名规则里面的最小粒度,这里是天 -->
<TimeBasedTriggeringPolicy interval="1"/>
<!-- SizeBasedTriggeringPolicy单个文件的大小限制 -->
<SizeBasedTriggeringPolicy size="10MB"/>
</Policies>
<!-- DefaultRolloverStrategy同一个文件下的最大文件数,与前面定义的命名规则中的%i计数器一起使用 -->
<DefaultRolloverStrategy max="50"/>
</RollingFile>
</appenders>
<loggers>
<!--过滤掉spring无用的debug信息-->
<logger name="org.springframework" level="info"></logger>
<!-- 如果没有指定logger的级别,只能打印root级别以上的日志 -->
<root level="info">
<appender-ref ref="Console"/>
<appender-ref ref="err"/>
</root>
</loggers>
转载自https://blog.csdn.net/shijiujiu33/article/details/90108575
根据自己的实际情况进行了一点改动