2015-01-04 2 views
0

시스템 특성에서 내 로그백 구성의 변수를 읽으려고하지만 성공하지 못했습니다.변수가 시스템 특성으로 읽히지 않습니다.

다음
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 : 나는 다음과 같이 매우 간단한 logback.groovy을 정의

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은 시스템 속성을 선택하지 않습니다. 찾을 자원 [logback.groovy] 에서 [파일 - -info이 ch.qos.logback.classic.LoggerContext에서 [기본] | 30768 :

22 : 03 내가이 프로그램을 실행하면 아래 출력 : /home/des/workspace/play/target/scala-2.10/classes/logback.groovy] 22 : 03 : 31,449 | -INFO in [email protected] - 약 으로 [ch.qos.logback.core.FileAppender] 22 : 03 : 31,450 | -INFO in [email protected]의 appender 인스턴스화 appender [FILE] 22:03 : 31,515 | -ERROR in ch.qos.logback. [email protected] - Appender 유형 [ch.qos.logback.core.FileAppender]의 [FILE]에 [USER_HOME] 속성 22 : 03 : 31,556 | -INFO가 인 ch.qos.logback이 없습니다. 파일 속성이 [null/myApp.log] 22 : 03 : 31,562 | -INFO에 에 설정되었습니다. [email protected] - 설정 로거 레벨 [ ROOT] DEBUG 22 : 03 : 31,569 | [email protected]에서 -info - 가 펜더 로거에 [FILE]라는 이름의 첨부 [ROOT]

참고 때 I 내 logback 파일에 USER_HOME 정의 전자 그것은 당신이 sbt을 사용하지 않고 생산 ENV에서 실행하려면

fork := true 

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

를 포함하는 다음

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

또는

변화 당신의 build.sbt을 할 필요가

답변

-1

잘 작동 (-DUSER_HOME = "/ tmp"를 사용하여) Play 배포를 생성 할 때 생성 된 실행 스크립트에 직접 전달할 수 있습니다 (사용).3210) 명령.

+0

두렵지 않아 두려워하지 않습니다. 시스템 등록 정보가 올바르게 설정되고 있습니다. main() 메소드에 println ("Prop :"+ System.getProperty ("USER_HOME"))을 추가하여 증명할 수있는 것은 – user79074

관련 문제