Spring Boot配置Slf4j + log4j2
之前在SpringBoot项目中使用的日志是Slf4j + Logback, 现在想换成Slf4j + log4j2, 但是在网上找了配置方式, 发现怎么都不好使, 最后发现是jar包冲突了, 所以这里贴出来针对的配置方式, 具体关于日志的一些讲解说明这里不多说, 可以去百度, 因为 ... 有一大堆 ... 都是抄袭, 就算不好使估计自己都不知道吧, 但是起码讲解说明都是有的, 可以去查看. 最后希望copy党, 能够自己实践一些你的copy好不好使, 不要盲目ctrl+c, ctrl+v就不管了
排除其他日志依赖
org.springframework.boot
spring-boot-starter-jdbc
org.springframework.boot
spring-boot-starter-logging
ch.qos.logback
logback-classic
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-logging
ch.qos.logback
logback-classic
一开始我只是排除了spring-boot-starter-web中的日志, 配置好log4j2的xml后, 发现怎么都不好使, 最后使用 mvn dependency:tree 命令后发现, spring-boot-starter-jdbc中也存在冲突的日志jar, 也需要排除掉, 所以我又排除了一遍, 才好使!才好使!才好使! 我记得有方式可以一次性排除掉pom中的jar, 这里在两个地方排除了两遍, 有点多余, 希望大家能够改进
引入log4j2的依赖
org.springframework.boot
spring-boot-starter-log4j2
配置log4j2-spring.xml文件
<?xml version="1.0" encoding="UTF-8"?>
以上的xml也是我从别的博客友那里搞来的, 但是都是经过本人实践的, 确保没问题, 请放心参考
测试
@Slf4j
@SpringBootTest
@RunWith(SpringRunner.class)
public class Log4j2Test {
//
@Test
public void test() {
//
final LocalDateTime now = LocalDateTime.now();
final String format = now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss,SSS"));
log.info("now -> {}", format);
log.debug("debug ...");
log.info("info ...");
log.warn("warn ...");
log.error("error ...");
}
}
使用日志的时候, 使用的是lombok的注解, 可以使用@Slf4j, 也可以使用@Log4j2
测试结果
每个文件的内容就不展示了, 可以自己试试, 具体log4j2-spring.xml中的配置, 也说明比较详细, 都不难