弹簧靴忽略日志回弹.xml

2022-09-03 03:43:27

我有2个使用Logback的Spring Boot(1.4.1-RELEASE)控制台应用程序。这两个配置文件或多或少是相同的,位于我的/src/main/resources文件夹中,并命名为logback-spring.xml

这两个项目都在其 pom.xml中包含了 maven 依赖项 spring-boot-starter-logging,并获取 logback 版本 1.1.7。

两个 pom 中定义的 Spring Boot 配置:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.4.1.RELEASE</version>
    <relativePath />
</parent>

<groupId>d.m.v.app-a</groupId>
<artifactId>my-app-a</artifactId>
<version>1.0.16-SNAPSHOT</version>
<packaging>jar</packaging>  

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-logging</artifactId>
    </dependency>
</dependencies>

但是,在运行应用程序时,其中一个应用程序似乎完全忽略了 logback 配置,而另一个应用程序则像预期的那样拾取它。

如果我将文件名更改为logback.xml对于无法正常工作的应用程序,它突然工作正常(即使使用我在其中使用的弹簧配置文件)。

所涉及的任何配置(即pom.xml,application.properties等)都没有明显的差异。

有谁知道为什么会这样?我发现这种行为相当令人困惑。


答案 1

我知道它有点旧,但我遇到了同样的问题,并弄清楚了...所以原因很简单,你的类路径上有一个logback.xml(在某个地方,不一定是在你启动的项目中,在我的情况下,它是一个依赖关系)。

看看这里:org.springframework.boot.logging.AbstractLoggingSystem.initializeWithConventions(LoggingInitializationContext, LogFile)

设置一个断点,然后你会看到。

如果 spring boot 在类路径上找不到任何 logback 配置(“logback-test.groovy”、“logback-test.xml”、“logback.groovy”、“logback.xml”),则将拾取 logback-spring.xml。


答案 2

我通过在 application.yml 中添加 logging.config 来解决这个问题。

logging:
  config: classpath:logback-spring.xml

推荐