北京网站建设公司哪个最好网站开发的最后五个阶段
news/
2025/9/29 3:15:32/
文章来源:
北京网站建设公司哪个最好,网站开发的最后五个阶段,网站域名空间地址,东丰在线网站建设问题来源
本周在实际项目中发现无法自定义的log4j-dev配置的error日志级别文件无法生效#xff0c;项目启动后仍然采用默认的info级别日志进行打印。之所以自定义名称#xff0c;是为了减少隔离不同环境的日志级别#xff0c;比如开发dev环境使用debug、info级别#xff0…问题来源
本周在实际项目中发现无法自定义的log4j-dev配置的error日志级别文件无法生效项目启动后仍然采用默认的info级别日志进行打印。之所以自定义名称是为了减少隔离不同环境的日志级别比如开发dev环境使用debug、info级别而线上环境使用error级别。如果是采用默认的文件名称log4j.properties那么是可以生效的但是在部署到不同环境时需要手动进行更改容易遗忘。
于是在同事的协助下花时间研究了一波log4j的源码最终完美解决
解决过程
我的log4j-dev.properties文件放置在resources目录下springmvc环境非springboot
1、在web.xml引入Log4jConfigListener的监听器.
context-param param-namelog4jConfigLocation/param-name param-valueclasspath:log4j-dev.properties/param-value /context-param context-param param-namelog4jRefreshInterval/param-name param-value6000/param-value /context-param listener listener-classorg.springframework.web.util.Log4jConfigListener/listener-class /listener
2、删除原来的log4j.properties文件以及各个子模块下的log4j.properties文件。必须要删除所有的默认名称文件。或者保留默认文件但是默认文件里的配置项的key必须同自定义配置文件log4j-dev.properties一致value可以不同。
3、对第2点的解释Log4jConfigListener源码发现如果存在默认文件会读取到默认文件的所以配置项然后读取自定义文件的配置项然后进行覆盖掉默认的配置项。如果没有默认配置文件则直接读取classpath:log4j-dev.properties文件。
主要源码心得
Log4j容器初始化过程时序图 web环境log4jweb初始化过程时序图 主要类
Logger——日志行为类debuginfo等日志记录行为Category——Logger的父类LoggerRepository——日志容器是管理Logger的容器内部维护一个Hashtable储存所有的LoggerHierarchy是Log4J中默认对LoggerRepository的实现类它用于表达其内部的Logger是以层次结构存储的。在对LoggerRepository接口的实现中getLogger()方法是其最核心的实现因而首先从这个方法开始。LoggerManager——日志管理日志框架的入口由他开始启动日志系统加载配置初始化根日志Appender——日志输出器Layout——日志形式Level——日志级别rootLogger——根日志每个Logger都有父级Logger是层级关系如果没有则根日志就是父级根日志是最后节点
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/921389.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!