首页 > 解决方案 > 哪个优先:logback.xml 或 logback-test.xml?

问题描述

我对 logback 很陌生。如果我的 spring boot 项目包含这两个文件 -

哪个会加载?logback.xml还是logback-test.xml

我正在阅读 logback 的文档,它说,首先它寻找logback-test.xml然后logback.xml.

那么如果我们部署应用程序,logback-test.xml文件是否会优先于我们?logback.xml

谢谢!

索拉布

标签: xmllogginglogback

解决方案


文档

让我们从讨论 logback 尝试配置自身的初始化步骤开始:

  1. Logback 尝试在类路径中查找名为 logback-test.xml 的文件。

  2. 如果没有找到这样的文件,logback 会尝试在类路径中找到一个名为 logback.groovy 的文件。

  3. 如果没有找到这样的文件,它会检查类路径中的文件 logback.xml。

  4. 如果没有找到这样的文件,则使用服务提供者加载工具(在 JDK 1.6 中引入)通过查找文件 META-INF\services\ch 来解析 com.qos.logback.classic.spi.Configurator 接口的实现。类路径中的 qos.logback.classic.spi.Configurator。其内容应指定所需配置器实现的完全限定类名。

  5. 如果以上都没有成功,logback 会使用 BasicConfigurator 自动配置自己,这将导致日志输出被定向到控制台。

最后一步是在没有配置文件的情况下提供默认(但非常基本的)日志记录功能的最后努力。

所以,这个问题的答案...

哪个优先:logback.xml 或 logback-test.xml?

...是logback-test.xml

然而,这个问题...

那么如果我们部署应用程序,logback-test.xml 文件是否会优先于 logback.xml?

...稍微使事情复杂化。如果您同时部署两者logback-test.xmllogback.xml然后logback-test.xml将优先考虑,但部署logback-test.xml. 实际上,鉴于您的问题中提供的位置logback-test.xml,默认情况下不会部署,因为它位于测试树 ( src/test/resources) 中。

同样,来自文档

如果您使用 Maven,并且将 logback-test.xml 放在 src/test/resources 文件夹下,Maven 将确保它不会包含在生成的工件中。因此,您可以在测试期间使用不同的配置文件,即 logback-test.xml,而在生产中使用另一个文件,即 logback.xml。

所以,总而言之;默认情况下logback-test.xml不会部署,因此logback.xml将在您部署的系统中使用,但在运行测试用例时logback-test.xml优先。logback.xml


推荐阅读