2015-01-04 5 views
0

Я пытаюсь читать переменные в конфигурации моего журнала из свойств системы, но безуспешно. Я определяю очень простой 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: 30768 | -INFO в ch.qos.logback.classic.LoggerContext [по умолчанию] - Найдено ресурсов [logback.groovy] в [файл : /home/des/workspace/play/target/scala-2.10/classes/logback.groovy] 22: 03: 31,449 | -INFO в [email protected] - О экземпляр экземпляра типа [ch.qos.logback.core.FileAppender] 22: 03: 31,450 | -INFO в [email protected] - Именование appender as [FILE] 22:03 : 31,515 | -ERROR в ch.qos.logback. [email protected] - Appender [FILE] типа [ch.qos.logback.core.FileAppender] не имеет никакого свойства [USER_HOME] 22: 03: 31,556 | -INFO в ch.qos.logback. core.FileAppender [FILE] - для свойства файла установлено значение [null/myApp.log] 22: 03: 31,562 | -INFO в [email protected] - Установка уровень регистратора [ ROOT] для DEBUG 22: 03: 31569 | -INFO в [email protected] - Прикрепление Appender имени [FILE] для Logger [ROOT]

Обратите внимание, что, когда я определите USER_HOME в моем файле logback fil е он работает отлично

ответ

-1

Вам нужно сделать следующий

sbt '; set javaOptions += "-DUSER_HOME="/tmp" ; runMain Test' 

или

изменить ваши build.sbt включить

fork := true 

envVars := Map("USER_HOME" -> "/tmp") 

Если вы хотите запустить с производством окр без использования sbt вы можете передать его напрямую (используя -DUSER_HOME = "/ tmp") в сценарий запуска, сгенерированный при создании дистрибутива Play (с использованием dist).

+0

Боюсь, что это не решит проблему. Системное свойство задано правильно. Это можно доказать, добавив println («Prop:» + System.getProperty («USER_HOME») к методу main() – user79074

Смежные вопросы