2015-11-22 40 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文件放在合理的地方。