Log4j2.xml不生效:WARN StatusLogger Multiple logging implementations found:

背景

将 -Dlog4j.debug 添加到IDEA的类的启动配置中

运行上图代码,这里log4j2.xml控制的日志级别是info,很明显是没生效。

复制代码
DEBUG StatusLogger org.slf4j.helpers.Log4jLoggerFactory is not on classpath. Good!
DEBUG StatusLogger Using ShutdownCallbackRegistry class org.apache.logging.log4j.core.util.DefaultShutdownCallbackRegistry
WARN StatusLogger Multiple logging implementations found: 
Factory: org.apache.logging.log4j.core.impl.Log4jContextFactory, Weighting: 10
Factory: org.apache.logging.slf4j.SLF4JLoggerContextFactory, Weighting: 15
Using factory: org.apache.logging.slf4j.SLF4JLoggerContextFactory

分析

警告信息显示检测到多个日志实现,权重分别为10和15。

最终选择了权重较高的org.apache.logging.slf4j.SLF4JLoggerContextFactory 作为日志的实现工厂。

现在需要让应用程序使用 Log4jContextFactory 而不是 SLF4JLoggerContextFactory 作为日志的实现工厂。因此需要检查依赖关系,移除冲突的依赖项(这里需要处理的依赖项是log4j-to-slf4j)。

处理

这里需要处理的是spring-boot-starter-web依赖中的log4j-to-slf4j。

复制代码
<exclusions>
    <exclusion>
        <artifactId>log4j-to-slf4j</artifactId>
        <groupId>org.apache.logging.log4j</groupId>
    </exclusion>
</exclusions>

验证


运行代码没问题,配置的日志文件也有内容了。

相关推荐
Tony Bai3 小时前
Go 安全新提案:runtime/secret 能否终结密钥残留的噩梦?
java·开发语言·jvm·安全·golang
oioihoii3 小时前
C++11到C++23语法糖万字详解
java·c++·c++23
pengzhuofan3 小时前
Java演进与与工程师成长
java·开发语言
月明长歌3 小时前
再谈Java 继承与多态:从“能用”到“精通”,更深一层的原理与设计思维
java·开发语言
狗头实习生3 小时前
Spring常见的事务失效原因
java·数据库·spring
想个名字太难4 小时前
网络爬虫入门程序
java·爬虫·maven
diudiu_334 小时前
web漏洞--认证缺陷
java·前端·网络
heartbeat..5 小时前
注解 + 反射:Web 项目 Excel 一键导出工具 EnhancedExportExcelUtil 详解
java·excel·poi
lkbhua莱克瓦245 小时前
IO流练习(加密和解密文件)
java·开发语言·笔记·学习方法·io流·io流练习题
嘟嘟w5 小时前
Servlet的生命周期
java