哪个优先:logback.xml还是logback-test.xml?

Sau*_*nde 10 xml logging logback

我很想回归.如果我的春季启动项目包含两个文件 -

  • logback.xml:出现在*src/main/resources /下
  • logback-test.xml:出现在*src/test/resources /下

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

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

因此logback-test.xml,logback.xml如果我们部署应用程序,文件将优先考虑吗?

谢谢!

SAURABH

gly*_*ing 17

来自文档:

让我们首先讨论后续尝试配置自身的初始化步骤:

  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.其内容应指定所需Configurator实现的完全限定类名.

  5. 如果以上都不成功,则logback将使用BasicConfigurator自动配置自身,这将导致日志记录输出定向到控制台.

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

那么,这个问题的答案......

哪个优先:logback.xml还是logback-test.xml?

...是logback-test.xml.

但是,这个问题......

因此,如果我们部署应用程序,logback-test.xml文件将优先于logback.xml吗?

......稍微复杂一点.如果您同时部署两个logback-test.xml,logback.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.