spring boot 使用log4j2日志工具

时间:2023-01-01 21:48:46

spring boot 配置log4j2

使用的spring版本

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.4.RELEASE</version>
</parent>

springboot自带的logback配置在

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>

之中,但是我的pom.xml中没有这个dependency,继续查找,发现,spring-boot-starter放在了

<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.0</version>
<!-- 去除本身自带的 logback -->
<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>

现在就使用了log4j2。
log4j2的配置文件如下

<?xml version="1.0" encoding="UTF-8"?>
<configuration status="warn" monitorInterval="600">
<appenders>
<console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="[%d{yyyy-MM-dd HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
</console>
<RollingRandomAccessFile name="RollingFileInfo" fileName="${sys:user.dir}/logs/info.log"
filePattern="${sys:user.dir}/logs/backup/info-%d{yyyy-MM-dd}-%i.log">

<Filters>
<ThresholdFilter level="INFO"/>
<ThresholdFilter level="WARN" onMatch="DENY" onMismatch="NEUTRAL"/>
</Filters>
<PatternLayout pattern="[%d{yyyy-MM-dd HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
<Policies>
<!--<TimeBasedTriggeringPolicy interval="1"/>-->
<SizeBasedTriggeringPolicy size="10MB"/>
</Policies>
<DefaultRolloverStrategy max="10"/>
</RollingRandomAccessFile>

<RollingRandomAccessFile name="RollingFileWarn" fileName="${sys:user.dir}/logs/warn.log"
filePattern="${sys:user.dir}/logs/backup/warn-%d{yyyy-MM-dd}-%i.log">

<Filters>
<ThresholdFilter level="WARN"/>
<ThresholdFilter level="ERROR" onMatch="DENY" onMismatch="NEUTRAL"/>
</Filters>
<PatternLayout pattern="[%d{yyyy-MM-dd HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
<Policies>
<SizeBasedTriggeringPolicy size="10MB"/>
</Policies>
</RollingRandomAccessFile>

<RollingRandomAccessFile name="RollingFileError" fileName="${sys:user.dir}/logs/error.log"
filePattern="${sys:user.dir}/logs/backup/error-%d{yyyy-MM-dd}-%i.log">

<ThresholdFilter level="ERROR"/>
<PatternLayout pattern="[%d{yyyy-MM-dd HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
<Policies>
<SizeBasedTriggeringPolicy size="10MB"/>
</Policies>
</RollingRandomAccessFile>
</appenders>

<loggers>
<logger name="com.wingconn" level="DEBUG" additivity="false">
<appender-ref ref="Console"/>
<appender-ref ref="RollingFileInfo"/>
<appender-ref ref="RollingFileWarn"/>
<appender-ref ref="RollingFileError"/>
</logger>
<root level="INFO">
<appender-ref ref="Console"/>
<appender-ref ref="RollingFileInfo"/>
<appender-ref ref="RollingFileWarn"/>
<appender-ref ref="RollingFileError"/>
</root>
</loggers>

</configuration>

上述中的sys:user.dir 指的是当前项目所在目录
还有一个 sys:user.home 是指当前用户家目录,这个在此配置文件中没有使用

至此,就可以按照自己的意愿使用log4j2了