我很想回归。如果我的春季启动项目包含两个文件 -
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.xml
或logback.xml
?
我正在阅读logback的文档,它说,首先它会查找logback-test.xml
然后logback-test.xml
。
如果我们部署应用程序,那么logback.xml
文件优先于logback-test.xml
吗?
谢谢!
SAURABH
答案 0 :(得分:14)
来自the docs:
让我们首先讨论尝试配置自身后面的logback的初始化步骤:
Logback尝试在类路径中查找名为logback-test.xml的文件。
如果未找到此类文件,则logback会尝试在类路径中查找名为logback.groovy的文件。
如果找不到这样的文件,它会检查类路径中的文件logback.xml。
如果没有找到这样的文件,则使用服务提供者加载工具(在JDK 1.6中引入)通过查找文件META-来解析com.qos.logback.classic.spi.Configurator接口的实现。类路径中的INF \ services \ ch.qos.logback.classic.spi.Configurator。其内容应指定所需Configurator实现的完全限定类名。
- 醇>
如果以上都不成功,则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
并不常见。实际上,由于问题[{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
。