xml - 哪个优先:logback.xml 或 logback-test.xml?
问题描述
我对 logback 很陌生。如果我的 spring boot 项目包含这两个文件 -
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
谢谢!
索拉布
解决方案
从文档:
让我们从讨论 logback 尝试配置自身的初始化步骤开始:
Logback 尝试在类路径中查找名为 logback-test.xml 的文件。
如果没有找到这样的文件,logback 会尝试在类路径中找到一个名为 logback.groovy 的文件。
如果没有找到这样的文件,它会检查类路径中的文件 logback.xml。
如果没有找到这样的文件,则使用服务提供者加载工具(在 JDK 1.6 中引入)通过查找文件 META-INF\services\ch 来解析 com.qos.logback.classic.spi.Configurator 接口的实现。类路径中的 qos.logback.classic.spi.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
. 实际上,鉴于您的问题中提供的位置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
推荐阅读
- java - 为部署在 jetty 中的两个应用程序设置不同的 java 系统属性作为服务
- python - 根据列值的条件应用条件函数
- r - 在保留组的同时映射 tibble 列
- python - 按同一列分组后取消透视 PySpark 数据帧
- r - 基于模式而非唯一标识符将数据重塑为长格式
- .net - 无法跟踪 Entity Framework Core 单元测试实体
- javascript - 自定义材质ui的菜单项
- r - r mdy_hms 不可预知的结果?
- asp.net-core - 没有 UI 的 IdentityServer4 使用 Asp Core Identity Scaffolded
- java - 使用 Apache Beam 查找 2 个列表的笛卡尔积