需求:使用sl4j日志门面,日志实现使用log4j2。
排除springboot中的默认使用的logback
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
<exclusions>
<exclusion>
<artifactId>spring-boot-starter-logging</artifactId>
<groupId>org.springframework.boot</groupId>
</exclusion>
</exclusions>
</dependency>
<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>
如果引入的其他jar包引用了其他的日志框架,也需要排除这些日志引用,之后sl4j-xxx的日志适配包。
引入log4j2的stater
<!--log4j2-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
springboot默认的配置文件路径为
spring-boot-2.2.2.RELEASE.jar!/org/springframework/boot/logging/log4j2/log4j2.xml

路径
关于sl4j
sl4j是日志门面(Java开发模式的门面模式),具体实现有很多,logback,log4j,log4j2等等。如果在系统中这使用一种框架,就需要先排除其他所有的日志框架,这是项目会报错。就需要引用你排除日志和sl4j的适配包,当代码中使用到排除日志的时候,实际上使用适配包的方法,而方法中实际使用的是sl4j的方法。当然最后也要引入你需要的sl4j实现包,如上面的lo4j2(log4j2没有实现sl4j),需要再引入log4j2和sl4j的转换包,而这些都被log4j2 stater做了。
