2011-07-05 4 views
2

tomcat6 서버에서 프로덕션 환경을 사용하여 grails 애플리케이션을 시작할 때마다 /var/log/tomcat6/catalina.out에 다음 오류가 표시됩니다.grails tomcat 로그에 log4j를 구성하는 방법

log4j:ERROR setFile(null,true) call failed. 
java.io.FileNotFoundException: stacktrace.log (Permission denied) 
... 
... 

나는 이것이 log4j가 로그 파일을 만들려고 시도하고 필요한 권한을 가지고 있지 않기 때문에 발생한다는 것을 모았습니다.

내 응용 프로그램의 로그 파일을 기존의 tomcat 로그 (/var/log/tomcat6/catalina.out)로 이동하거나/var/log/tomcat6 디렉토리의 별도 파일로 이동하는 것이 이상적입니다. .

최소한의 구성만으로 log4j 로그의 위치를 ​​변경하려면 어떻게해야합니까? 즉, 자체 appender를 자체 출력 패턴으로 정의하고 싶지는 않지만 로그 파일의 위치를 ​​변경하려고합니다. 수준 info으로이 경우 모든 로그 이벤트를

log4j = { 
    appenders { 
     file name:'file', file: '/var/log/tomcat6/mylog.log' 
    } 
    root { 
     info 'stdout', 'file' 
    } 
} 

을 이상 (즉, 바람둥이가 추가됩니다 모두 파일 /var/log/tomcat6/mylog.log 표준 출력으로 밀어됩니다

답변

3

당신은 설치 로깅 grails-app/conf/Config.groovy에 구성하여 파일을 사용할 수 있습니다 혼자서 catalina.out)

참조 : http://grails.org/doc/latest/guide/3.%20Configuration.html#3.1.2%20Logging

+11

당신은이 같은 Tomcat의 로그 디렉토리의 경로 하드 코딩 피할 수있다 : '파일 이름 :'파일 ', 파일 : (System.getProper ty ('catalina.base')? : 'target') + '/ logs/mylog.log'' 이것은'catalina.base' 속성이 설정되어 있지 않으면 로그를 쓰는 run-app 나 Tomcat에서 작동합니다 타겟/로그 –

+0

Tomcat의 로깅이 console logger를 catalina.out으로 리디렉션하지 않습니까? –

+0

appender 파일 속성을 '/var/log/tomcat6/mylog.log'로 설정했습니다. 그러면 로그 파일이 생성되고 로깅됩니다. 그러나 나는 여전히 'catalina.out'로그에서 위의 오류를보고 있습니다. 누구든지이 오류를 throw 할 때 log4j 액세스하려고하는 파일을 알 수있는 빠른 방법을 알고 있습니까? – srkiNZ84

관련 문제