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

时间:2018-05-28 06:15:53

标签: xml logging logback

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

  • public function getLeague(){ return $this->hasOne(Leagues::className(), ['id' => 'league_id']); } public function getGallery(){ return $this->hasMany(TeamGalleries::className(), ['team_id' => 'id']); } :出现在* src / main / resources /
  • logback.xml:出现在* src / test / resources /

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

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

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

谢谢!

SAURABH

1 个答案:

答案 0 :(得分:14)

来自the docs

  

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

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

  2.   
  3. 如果未找到此类文件,则logback会尝试在类路径中查找名为logback.groovy的文件。

  4.   
  5. 如果找不到这样的文件,它会检查类路径中的文件logback.xml。

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

  8.   
  9. 如果以上都不成功,则logback会自动使用BasicConfigurator自行配置,这将导致日志输出定向到控制台。

  10.         

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

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

  

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

... logback-test.xml

然而,这个问题......

  

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

......稍微复杂一点。如果您部署 logback-test.xmllogback.xml,则logback-test.xml将优先考虑,但部署logback-test.xml并不常见。实际上,由于问题[{1}}中提供的位置默认情况下不会被部署,因为它位于测试树(logback-test.xml)中。

再次,来自the docs

  

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

总而言之;默认情况下,src/test/resources将不会部署logback-test.xml,因此{®1}}将在您部署的系统中使用,但logback.xml在运行测试用例时将优先于logback-test.xml