如何使用SBT和Scala正确管理开发和生产中的logback配置?

问题描述 投票:6回答:1

我有一个非常标准的Scalatra项目,使用Logback进行日志记录。

logback manual之后,我为我的开发配置(调试日志)添加了一个logback-test.xml,同时保持了生产logback.xml

但是,在开发中使用xsbt-web-plugin运行带有代码重新加载的容器时,我的应用程序似乎只能拿起logback.xml

我如何获得所需的行为?:

  1. 在开发模式(./sbt container:start),该应用程序使用logback-test.xml
  2. 使用SBT-assembly组装成zip时,请排除测试配置。

目前这些似乎都不起作用。

scala sbt slf4j logback sbt-assembly
1个回答
3
投票

你在滥用logback-test.xml。它仅用于类似单元的测试,应放在src/test/resources中(自动从prod中排除)。要实现您想要的 - 您可以通过系统属性设置logback-dev.xml的路径:

 javaOptions in container += "-Dlogback.configurationFile=/some/path/logback-dev.xml"

这条路可能是相对的。见,https://stackoverflow.com/a/26538449/1809978

在我的实践中,我们不打包logback.xml即使在prod(它指向一些外部的地方)有能力ad-hoc更改日志配置。

附:如果你也有兴趣从sbt-assembly中排除文件 - this可能有所帮助

© www.soinside.com 2019 - 2024. All rights reserved.