SpringBoot默认使用LogBack作为日志框架
由于之前一直使用Log4j日志框架
所以就想着试一下在SpringBoot环境下切换使用log4j2记录日志
-
首先排除SpringBoot自带的log框架依赖,再引入Log4j框架的依赖
<!--使用log4j2--> <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"?> <configuration> <appenders> <!-- 控制台输出 --> <console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5p] [%F:%M:%L] : %m%n"/> </console> <!-- fileName:输出路径 filePattern:命名规则(回滚的新文件命名规则) --> <RollingFile name="err" fileName="G://logs/err.log" filePattern="logs/err-%d{yyyy-MM-dd}-%i.log"> <Filters> <!-- 大于等于该级别,匹配接收,不匹配拒绝 --> <ThresholdFilter level="error" 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="error"></logger> <!-- 如果没有指定logger的级别,只能打印root级别以上的日志 --> <root level="info"> <appender-ref ref="Console"/> <appender-ref ref="err"/> </root> </loggers> </configuration>