注:本次使用的是springboot4,具体版本为springboot4.0.6 GA (正式版)
Slf4j为外部调用提供了统一的日志接口,其内部实现取决于使用的日志框架。Slf4j是门面模式的优秀实践。
目的是要将这四部分进行整合,即希望日志都通过Log4j2来进行打印/记录。
1)引入依赖(不知道这几个依赖是否有多余的,这四个一起是能正常实现,少一个多一个没验证过):
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>2.0.18</version>
<scope>compile</scope>
</dependency>
<!-- Source: https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-slf4j2-impl -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j2-impl</artifactId>
<version>2.26.0</version>
<scope>compile</scope>
<exclusions>
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- Source: https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.26.0</version>
<exclusions>
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- Source: https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-api -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.26.0</version>
<scope>compile</scope>
</dependency>
上面依赖包括:slf4j-api、log4j-slf4j2-impl、log4j-api、log4j-core
需要注意的是,要排除多余依赖,不一定要按下面写的来排除,上面四个依赖只要是唯一的就行。我的依赖排除如下:
log4j-slf4j2-impl依赖中,排除log4j-api和log4j-core;
log4j-core依赖中,排除log4j-api;
另外,spring-boot-starter依赖中,要排除spring-boot-starter-logging。
ps:还可以使用另一种依赖 spring-boot-starter-log4j2 代替,具体实操没有,但理论可行。
2)mybatis-config.xml配置-实现sql日志通过log4j2的打印
<settings>
<setting name="logImpl" value="SLF4J"/>
</settings>
3)log4j2.xml配置-精细化控制log4j2的日志使用
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="info">
<properties>
<property name="LOG_HOME">D:/logs</property>
<property name="FILE_NAME">mylog</property>
<property name="log.sql.level">debug</property>
</properties>
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] LOG4J2 %-5level %l - %msg%n"/>
</Console>
<RollingRandomAccessFile name="RollingRandomAccessFile"
fileName="C:\Users\aaa\Desktop\testlog/log4j2-config.xml.log"
filePattern="C:\Users\aaa\Desktop\testlog/%d{yyyy-MM-dd}/log4j2-config.xml-%i.log">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] LOG4J2 %-5level %l - %msg%n"/>
<Policies>
<TimeBasedTriggeringPolicy interval="1"/>
<SizeBasedTriggeringPolicy size="10 MB"/>
</Policies>
<DefaultRolloverStrategy max="20"/>
</RollingRandomAccessFile>
</Appenders>
<Loggers>
<Root level="info">
<AppenderRef ref="Console"/>
<AppenderRef ref="RollingRandomAccessFile"/>
</Root>
<Logger name="com.example.dao.EmpDao" level="${log.sql.level}" additivity="false">
<AppenderRef ref="Console"/>
</Logger>
</Loggers>
</Configuration>
经过以上三个步骤,即可实现log4j2日志框架的使用。