2017-04-19 79 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