【问题标题】:scala project is not taking logback xml configuration when passed via JVM argument通过 JVM 参数传递时,scala 项目不采用 logback xml 配置
【发布时间】:2016-12-25 13:32:32
【问题描述】:

我有一个 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 传递

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

【问题讨论】:

  • 您是否尝试过设置文件编码? scala-sbt.org/0.13/docs/Setup-Notes.html 另外,您是否收到任何警告/错误?
  • 感谢您的回复。@NathanielFord。它现在可以工作了。
  • 这有帮助吗?还是你还卡着? @Gopi
  • VM 参数需要像这样传递。 java com.test.SampleProj -Dlogback.configurationFile=/tmp/logback.xml

标签: scala logging sbt logback slf4j


【解决方案1】:

java 的参数应该如下。

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2013-10-31
      • 1970-01-01
      • 2010-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-13
      • 1970-01-01
      相关资源
      最近更新 更多