从零搭建开发脚手架 注意Logback多个配置文档导致配置紊乱问题
创始人
2024-02-28 13:07:12
0

文章目录

    • 背景
      • 查找logback内部状态以及生效的配置文件
    • 解决

背景

最近项目中出现个问题,自定义的logback.xml不生效,排查发现项目中出现了2个logback.xml,另一个在依赖Jar中,使用的在依赖Jar中的logback.xml,导致我们自定义的配置无法生效。

my-app/config/logback.xmllib/aaa-lib.jarlogback.xml -- 隐藏bugbbb-lib.jar

最好不要将配置文件打包到jar包中,因为增加配置文件本质上就是为了方便用户调整参数配置。

如果将它打包到jar包中,你需要修改指定的文件并从新打包,上线。

重点日志Resource [logback.xml] occurs multiple times on the classpath.

中文logback.xml文档

  • https://logbackcn.gitbook.io/logback/

查找logback内部状态以及生效的配置文件

LoggerContext lc = (LoggerContext)LoggerFactory.getILoggerFactory();
StatusPrinter.print(lc);
或者
LoggerContext loggerContext =  ((LoggerContext) LoggerFactory.getILoggerFactory());
List list = loggerContext.getStatusManager().getCopyOfStatusList();    

解决

方式一 指定配置文件路径

java -Dlogback.configurationFile=/path/to/config.xml -jar xxx.jar

相关文档:https://logback.qos.ch/manual/configuration.html#configFileProperty

方式二 SpringBoot指定配置

想要自定义文件名的可配置:logging.config指定配置文件名:

logging.config=classpath:logging-config.xml

通过将相应的库添加到classpath可以激活各种日志系统,然后在classpath根目录下提供合适的配置文件可以进一步定制日志系统,配置文件也可以通过Spring Environmentlogging.config属性指定。

使用org.springframework.boot.logging.LoggingSystem系统属性可以强制Spring Boot使用指定的日志系统,该属性值需要是LoggingSystem实现类的全限定名,如果值为none,则彻底禁用Spring Boot的日志配置。

由于日志初始化早于ApplicationContext的创建,所以不可能通过@PropertySources指定的Spring @Configuration文件控制日志,系统属性和Spring Boot外部化配置可以正常工作。

以下文件会根据你选择的日志系统进行加载:

日志系统定制配置
Logbacklogback-spring.xml,logback-spring.groovy,logback.xmllogback.groovy
Log4jlog4j.propertieslog4j.xml
Log4j2log4j2-spring.xmllog4j2.xml
JDK (Java Util Logging)logging.properties

如果可能的话,建议你使用-spring变种形式定义日志配置(例如,使用logback-spring.xml而不是logback.xml)。如果你使用标准的配置路径,Spring可能不能够完全控制日志初始化。

相关内容

热门资讯

中国人民银行发布一次性信用修复... 人民网北京12月22日电 (记者黄盛)中国人民银行今日发布关于实施一次性信用修复政策有关安排的通知。...
一次性信用修复政策6问6答 符合哪些条件的逾期信息可以适用一次性信用修复政策,作不予展示处理? 个人是否需要主动申请适用一次性...
一次性信用修复政策,一图读懂! 相关报道: 责编:李文玉 | 审核:李震 | 监审:古筝 (来源:中国人民银行)
家校纠纷的细节背后,藏着资源和... 石门县第二中学 一起普通的家校纠纷,源头是高二学生与班主任之间产生隔阂,后来演变成班主任退群、学生推...
一次性信用修复政策来了!细则详... 本文转自【央视新闻客户端】; 今天(22日),中国人民银行发布通知,实施一次性信用修复政策,支持信用...
原创 泰... 12月18日,中国驻泰国大使张建卫会见泰国新任总检察长易提蓬的这场会面,看似是一次常规外交互动,实则...
郑重提醒:一次性信用修复政策不... 央行发布一次性信用修复政策,支持信用受损但积极还款的个人高效便捷重塑信用。一次性信用修复政策实行“免...
央行发布一次性信用修复政策! 12月22日,中国人民银行发布通知,实施一次性信用修复政策,支持信用受损但积极还款的个人高效便捷重塑...
支持个人信用重塑!央行一次性信... 为支持信用受损但积极还款的个人高效便捷重塑信用,12月22日中国人民银行对外发布一次性信用修复政策有...