2017-04-19 75 views
0

我想根據SCALA_ENV環境變量加載不同的logback配置。使用Scala Play2.5加載基於環境的logback配置

  1. 如果SCALA_ENV = PROD負載logback.xml
  2. 如果SCALA_ENV = dev的負載的logback-dev.xml
  3. 如果SCALA_ENV =測試負載的logback-的test.xml
  4. 如果SCALA_ENV = QA負載logback- qa.xml

從Play2.5 docuemntation我發現這個例子,但它不明確。
enter image description here

而且MyComponenets是沒有得到解決,編譯失敗。

回答

0

這是我要做的事在我build.sbt文件:

// logback for Prod 
javaOptions in Production += "-Dlogger.resource=logback.prod.xml" 

// logback for testing 
javaOptions in Test += "-Dlogger.resource=logback.test.xml" 

我默認的是dev的,這僅僅是留在默認位置。

+0

嗯這應該暫時無法工作。但是如果我想爲QA(logback.qa.xml)添加另一個logback並在SCALA_ENV = QA時加載logback.qa.xml怎麼辦? –

+0

如何在生產模式下運行sbt? –

+0

'javaOptions'只是省卻了你不得不在命令行中指定的情況。如果你想運行其他的東西,只需執行'./myapp/bin/myapp -Dlogger.resource = logback.qa.xml'。對於你的第二個問題,你可以做'sbt testProd' – Tyler

0

不是一個理想的解決方案,但我改變了基於環境-Dlogger.resource文件中build.sbt

lazy val logBackXml = sys.env("env").toLowerCase() match { 
     case "prod" => "-Dlogger.resource=logback.xml" 
     case "test" => "-Dlogger.resource=logback.test.xml" 
     case "qa" => "-Dlogger.resource=logback.qa.xml" 
     case _  => "-Dlogger.resource=logback.dev.xml" 
} 

javaOptions in Production += logBackXml