spring boot log4j2与三方依赖库log4j冲突无法初始化问题解决方法
2023-09-27 14:28:34 时间
因为从Spring Boot 1.4开始,spring boot就不支持log4j了,必须是log4j2或者logback,具体两者如何配置以及NDC的支持可以参考spring boot精华版。
这里要讲的是如果刚好用的spring boot是1.4+或者应用使用了log4j2,但是依赖的三方使用的是log4j,该如何处理?默认情况下,如果log4j和log4j2实现都存在,spring boot启动时会提示无法初始化log4j,类似如下:
log4j:WARN No appenders could be found for logger (org.I0Itec.zkclient.ZkConnection).
log4j:WARN Please initialize the log4j system properly.
然后日志一条都不打印。。。。
其中方法之一如果三方库依赖的是SLF4J,就把log4j12的依赖排除掉,如下:
<dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka_2.12</artifactId> <version>0.11.0.3</version> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </exclusion> </exclusions> </dependency>
这样使用log4j2的库日志时可以正常打印了,三方库依赖log4j的就会在运行期间仍然提示上述错误信息。
此时如果强行把三方库依赖的log4j直接排除掉,在启动时会提示“java.lang.NoClassDefFoundError: org/apache/log4j/Logger
”,这绝对是不可以接受的。
如果三方库没有提供依赖log4j2的版本,可将依赖的 log4j 后,然后额外加上这个 log4j-1.2-api,如下:
<dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka_2.12</artifactId> <version>0.11.0.3</version> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </exclusion> <exclusion> <groupId>log4j</groupId> <artifactId>log4j</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-1.2-api</artifactId> </dependency>
相关文章
- 解决CVE-2022-22978 Spring Security RegexRequestMatcher 认证绕过漏洞
- 在Spring Boot中配置web app
- Error creating bean with name ‘org.apache.cxf.jaxws.spring.NamespaceHandler$SpringServerFactoryBean
- spring boot核心配置文件是什么?
- 《深入实践Spring Boot》一1.2 创建项目工程
- Spring boot 启动之后,执行某些初始化的几种方法
- Spring Core Programming(Spring核心编程) - AOP Concepts(AOP基本概念)
- Spring Boot日志定义
- Spring Boot 2.x基础教程:使用@Scheduled实现定时任务
- Spring Boot 2.4版本前后的分组配置变化及对多环境配置结构的影响
- springboot(十一):Spring boot中mongodb的使用
- 2015第24周五Spring的AOP
- 比较spring cloud和dubbo,各自的优缺点是什么
- Spring boot异常统一处理方法:@ControllerAdvice注解的使用、全局异常捕获、自定义异常捕获
- Spring 注解 @Qualifier 详细解析
- spring的启动过程
- spring中关于<context:component-scan>的使用说明
- Spring Boot中Spring data注解的使用
- Spring Boot 之Spring data JPA简介
- 了解Lombok常用注解:@Slf4j与@Log4j、 @AllArgsConstructor、@NoArgsConstructor、@Data,@ApiOperation注解及Swagger与Spring MVC集成步骤及常见注解
- Spring Cloud : Gateway 服务网关认识(一)
- Spring Boot中配置文件application.properties使用
- spring bean生命周期管理--转
- Exploring Micro-frameworks: Spring Boot--转载
- spring boot 静态资源的映射规则 (1) webjars 资源映射
- spring boot (2) 配置swagger2核心配置 docket
- Spring Boot 整合 Mybatis
- Spring Cloud各组件