scala项目在通过JVM参数传递时没有采用logback xml配置

时间:2016-08-18 14:46:12

标签: scala logging sbt logback slf4j

我有一个scala项目,我正在使用scala-slf4j日志记录和logback。当项目通过命令行执行时,如下所示

java -jar <sample_project.jar> -Dlogback.configurationFile=/tmp/logback.xml

它使用logger类作为' ch.qos.logback.classic.Logger '但未采用logback.xml配置。

如果我将logback配置xml放在 / src / main / resources 下,同样可以正常工作。

import org.slf4j.LoggerFactory

object SampleProj {
  val logger = LoggerFactory.getLogger(this.getClass)
  logger.info("SCALA Logging")
}

build.sbt

"ch.qos.logback" % "logback-classic" % "1.1.2",
"com.typesafe.scala-logging" %% "scala-logging-slf4j" % "2.1.2",

尝试的另一种方法是提取scala项目jar并执行主类,如下所示

java com.test.SampleProj -Dlogback.configurationFile=/tmp/logback.xml

我尝试的其他一些方法是,

  1. 设置类路径并放置logback xml
  2. 传递为“ -Dlogger.file = / tmp / logger.xml
  3. 传递为 -Dlogger.resource = / tmp / logger.xml
  4. 有人可以帮我解决这个问题。 感谢

2 个答案:

答案 0 :(得分:2)

java的参数应如下所示。

java -Dlogback.configurationFile=/tmp/logback.xml com.test.SampleProj 

答案 1 :(得分:0)

就我而言,上述解决方案还不够。我的问题是默认情况下未读取logback.xml文件。

我相信http://www.scala-sbt.org/0.13/docs/Setup-Notes.html提供的解决方案通过指定文件编码有效,最好从shell进行修复。

在我的shell中,运行以下命令:

export LC_ALL="en_US.UTF-8"
export LC_CTYPE="en_US.UTF-8"
sudo dpkg-reconfigure locales

此后,logback.xml被正确读取。