SBT:通过logback.xml资源进行子项目特定日志配置

时间:2015-11-22 09:58:01

标签: logging sbt

我有一个具有以下结构的SBT构建:

WebDriver driver = // your driver...;
driver.get(feedUrl);
WebElement element = (new WebDriverWait(driver, 10)).until(ExpectedConditions.presenceOfElementLocated(By.id("myDynamicElement")));

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

如何在服务器中只有一个logback.xml资源位于类路径中,为每个项目提供两个logback.xml资源。 (默认情况下,dependsOn也将Core的logback.xml放入Server项目的类路径中,导致logback警告我项目服务器中的多个logback.xml资源。)

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

后来,我也在寻找从打包的jar中排除资源的方法,但看起来可以像这样实现:How to exclude resources during packaging with SBT but not during testing

1 个答案:

答案 0 :(得分:4)

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

  • logback.xml可以放在" conf"子项目目录
  • " sbt run"在子项目中找到logback.xml
  • 从JAR包装中排除了logback.xml。

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