springboot 工程通过maven引入Log4j2 ,会报:
网上说是自带的logback和 引入的log4j2 冲突了,要用exclusions 排除下logback,但是没用,还是一样的现象:
如下:
而且感觉实际代码中跑的还是用的logback的,不是引入的;
按照提问者的方式导入后,包括排除logback
导入log4j-slf4j-impl-2.9.1.jar报错,应该是和内部包冲突
删掉后,报SLF4JLoggerContext cannot be cast to org.apache.logging.log4j.core.LoggerContext错误
网上查了有log包冲突,故排除之,最后配置文件里改成:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-to-slf4j</artifactId>
</exclusion>
</exclusions>
</dependency>
还原一下依赖:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<!--排除logback-->
<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>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
这个不影响使用,建议用logback就行
给你找了一篇非常好的博客,你可以看看是否有帮助,链接:Log4j2配置及与Logback对比参考这个配置 使用log4j2 https://www.cnblogs.com/Baker-Street/p/16170155.html
重点是要把logback的jar包排除掉, 因为如果有logback的jar包的话 springboot会优先用logback的。
把log4j2删了吧,确实冲突了