【发布时间】:2015-03-02 10:52:30
【问题描述】:
我试图从系统属性中读取我的 logback 配置中的变量,但没有成功。我定义了一个非常简单的 logback.groovy 如下:
import ch.qos.logback.classic.encoder.PatternLayoutEncoder
import ch.qos.logback.core.FileAppender
import static ch.qos.logback.classic.Level.DEBUG
appender("FILE", FileAppender) {
file = "${USER_HOME}/myApp.log"
encoder(PatternLayoutEncoder) {
pattern = "%msg%n"
}
}
root(DEBUG, ["FILE"])
然后是一个简单的Test.scala:
import org.slf4j.LoggerFactory
object Test {
val log = LoggerFactory.getLogger(getClass)
def main(args: Array[String]): Unit = {
log.debug("Where does the logging go?")
}
}
然后运行
sbt -DUSER_HOME="/tmp"
但是 logback 并没有获取系统属性。以下是我运行程序时的输出:
22:03:30,768 |-ch.qos.logback.classic.LoggerContext 中的信息[默认] - 找到资源 [logback.groovy] 在 [文件:/home/des/workspace/play/target/scala-2.10/classes/logback.groovy] 22:03:31,449 |-信息在 ch.qos.logback.classic.gaffer.ConfigurationDelegate@5c3286d0 - 关于 实例化类型为 [ch.qos.logback.core.FileAppender] 的附加程序 22:03:31,450 |-信息在 ch.qos.logback.classic.gaffer.ConfigurationDelegate@5c3286d0 - 命名 appender as [FILE] 22:03:31,515 |-ERROR in ch.qos.logback.classic.gaffer.AppenderDelegate@7930f0f9 - Appender [ch.qos.logback.core.FileAppender] 类型的 [FILE] 不适用 [USER_HOME] 属性 22:03:31,556 |-INFO in ch.qos.logback.core.FileAppender[FILE] - 文件属性设置为 [null/myApp.log] 22:03:31,562 |-INFO in ch.qos.logback.classic.gaffer.ConfigurationDelegate@5c3286d0 - 设置 记录器级别 [ROOT] 到 DEBUG 22:03:31,569 |-INFO in ch.qos.logback.classic.gaffer.ConfigurationDelegate@5c3286d0 - 将名为 [FILE] 的 appender 附加到 Logger[ROOT]
请注意,当我在我的 logback 文件中定义 USER_HOME 时,它可以正常工作
【问题讨论】: