关于log4j的那些坑

发布时间:2023年12月29日

背景:工程中同时存在log4j.xml&log4j2.xml

maven依赖如下:

此时工程实际使用的日志文件为log4j.xml

1、当同时设置log4j和log4j2的桥接依赖时

maven依赖如下:

此时启动会有警告日志:

点击告警日志链接:https://www.slf4j.org/codes.html#multiple_bindings

由文章得知具体加载哪个log4j/log4j2文件是由jvm随机决定的。

工程桥接依赖顺序如下:

经验证 jvm会选择上方桥接依赖与slf4j绑定,具体可参见启动日志(或断点源码):

log4j与log4j2都包含Log4jLoggerFactory对象,因此我们可通过包路径确认加载何bean。

(为何这么加载,暂且留个疑问,等下回再去剖析,感觉略深)

至此,我们便弄明白当工程必须存在两个log4j配置文件时,文件的加载情况如何。

另发现,工程日志路径打印异常问题,表现为打印日志路径及文件名称异常,后详细排查了target目录,发现是由于配置文件中占位符未替换导致的,由于工程基于profile,因此我们通过修改pom文件中对应profile的build情况便可解决。

新增上图红框中文件配置即可。

经验证,问题至此已全部解决。

文章来源:https://blog.csdn.net/weixin_39195030/article/details/135281033
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。