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 @ 2021-07-31 17:59  Looveh  阅读(997)  评论(0编辑  收藏  举报