2015-11-22 41 views
1

子项目特定日志配置我有一个SBT构建具有以下结构:SBT:经由logback.xml资源

lazy val Core = project 
lazy val Server = project dependsOn(Core) 

在核心,我有一个命令行实用程序,记录使用的logback。在Server中,我也使用logback进行日志记录,但是我需要一个来自Core中的logback.xml配置不同的

我怎么能有两个logback.xml资源,每个项目的方式,在服务器只有一个logback.xml资源在classpath中。 (默认情况下,dependsOn也将Core的logback.xml放入Server项目的类路径中,导致logback警告我关于项目Server中的多个logback.xml资源)。

我主要关心的是“sbt run”的类路径。

Lateron,我也在寻找从封装瓶子中排除资源的方法,但它看起来像这样可以实现:How to exclude resources during packaging with SBT but not during testing

+0

您是否需要jar文件中的logback.xml文件? –

+0

不,logback.xml文件应该保存在jar文件之外(因为用户可能想编辑它们)。 – Georg

+0

你想包含logback.xml吗?如果没有,请按照http://www.scala-sbt.org/0.13/docs/Howto-Customizing-Paths.html#Change+the+default+resource+directory中所述从src/main/resources中移动它。 –

回答

3

这是适合我的解决方案。在使用log4j的每个子项目中,我将fullClasspath in Runtime += baseDirectory.value/"conf"添加到build.sbt文件。这样一来,

  • 的logback.xml可以把在子项目子项目
  • “SBT运行”的“CONF”目录下找到
  • 的logback.xml从排除logback.xml JAR包装。

当然,在发布完整产品时,必须配置打包工具将logback.xml文件放在合理的地方。