Logback日志文件失效

2021-07-30碰到加了logback-spring.xml依然不生效的问题,特此记录。

发现问题

在项目中引入logback-spring.xml文件,该文件配置了会在项目根目录下生成logs文件夹,但是运行项目之后发现没有生成文件夹。

问题原因

classpath下已经存在logback.xml文件

解决方案

spring默认会自动查找classpath下以下几个文件:

  • logback-test.groovy
  • logback-test.xml
  • logback.groovy
  • logback.xml

详见源码org.springframework.boot.logging.logback.LogbackLoggingSystem#getStandardConfigLocations

protected String[] getStandardConfigLocations() {
    return new String[] { "logback-test.groovy", "logback-test.xml", "logback.groovy", "logback.xml" };
}

如果classpath下存在logback.xml文件会默认使用,spring或默认自动拼接上-spring后缀,即如果classpath下存在logback.xml,会自动拼装成为logback-spring.xml,
详见源码org.springframework.boot.logging.AbstractLoggingSystem#getSpringConfigLocations

protected String[] getSpringConfigLocations() {
    String[] locations = getStandardConfigLocations();
    for (int i = 0; i < locations.length; i++) {
        String extension = StringUtils.getFilenameExtension(locations[i]);
        locations[i] = locations[i].substring(0, locations[i].length() - extension.length() - 1) + "-spring."
        + extension;
    }
    return locations;
}

方案一

查看pom.xml依赖的jar包中是否存在logback.xml文件,将该jar包删除。当然,既然项目中引入了该jar包说明是要用到的,所以不推荐

方案二

在配置文件中指定日志配置文件地址:

logging:
    config: classpath:logback-spring.xml
posted @   余晖脉脉  阅读(1061)  评论(0)    收藏  举报
编辑推荐:
· 当数据爆炸遇上SQL Server:优化策略全链路解析
· 记录一次线上问题排查:JDK序列化问题
· 微服务之间有哪些调用方式?
· 记一次SQL隐式转换导致精度丢失问题的排查
· dotnet 9 通过 AppHostRelativeDotNet 指定自定义的运行时路径
阅读排行:
· 一个基于 C# Unity 开发的金庸群侠传 3D 版,直呼牛逼!
· SQL Server 2025 中的改进
· 国内首个「混合推理模型」Qwen3深夜开源,盘点它的N种对接方式!
· 向商界大佬一样管理技术工作 - 以团队换将+技术重构为例
· 用c#从头写一个AI agent,实现企业内部自然语言数据统计分析(三)--一个综合的例子
点击右上角即可分享
微信分享提示