关于log4j的那些坑
2023-12-29 06:11:10
背景:工程中同时存在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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!