spring 使用 logback-test.xml 而不是 logback.xml 启动

spring boot using logback-test.xml instead of logback.xml

我有一个 gradle 项目,结构如下所示

>
> main (one project)
> shared (another project)
> api 
>> shared2 (another project)

主项目同时依赖于 shared 和 shared2 项目。 shared 和 shared2 项目在它们的 src/test/resources 文件夹中都有一个 logback-test.xml,主项目在其 src/main/resources 文件夹中有一个 logback.xml。

当我 运行 eclipse 中的主项目使用它的主应用程序时 class 我期望只有 logback.xml 被加载到 class 路径中。相反,我看到警告说发现了多个 slf4j 绑定,更重要的是,正在从 logback-test.xml 而不是 logback.xml 应用日志记录设置。这是进一步说明的文件夹结构

>
> main
> > src/main/resources
> > > logback.xml
> shared
> > src/test/resources
> > > logback-test.xml
> api/shared2
> > src/test/resources
> > > logback-test.xml

在两个 logback-test.xml 文件中,我在 DEBUG 级别启用了 org.springframework 调试,在 logback.xml 中,它设置为 INFO 级别。当我启动应用程序时,我看到 spring DEBUG 日志。

这是示例 github 项目 https://github.com/adeelmahmood/logback-test-conf-issue

以下是 logback 库查找配置 xml 文件的顺序:(来自文档)

  1. Logback tries to find a file called logback.groovy in the classpath.

  2. If no such file is found, logback tries to find a file called logback-test.xml in the classpath.

  3. If no such file is found, it checks for the file logback.xml in the classpath..

  4. If neither file is found, logback configures itself automatically using the BasicConfigurator which will cause logging output to be directed to the console.

因此在您的情况下,logback 在类路径中找到 logback-test.xml 并相应地记录。

您可以通过设置名为 logback.configurationFile 的系统 属性 来指定您自己的配置文件位置。