当通过 JVM 参数传递时,scala 项目不采用 logback xml 配置

scala project is not taking logback xml configuration when passed via JVM argument

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

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

它将记录器 class 用作“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 并执行主要 class,如下所示

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

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

  1. 设置class路径并放置logbackxml
  2. 传递为“-Dlogger.file=/tmp/logger.xml
  3. 传递为 -Dlogger.resource=/tmp/logger.xml

谁能帮我解决这个问题。 谢谢

java 的参数应如下所示。

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

就我而言,上述解决方案还不够。我的问题是默认情况下未读取 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 被正确读取。