2011-01-19 2 views
1

앱 로그 메시지가 STDOUT으로 보내지려고합니다.Log4J 로그 메시지가 app-log에 기록되고 stdout에 grails 앱인

log4j = { 

    appenders { 
    rollingFile name: 'applog', file: "${System.properties.getProperty('catalina.base')}${File.separator}logs${File.separator}application.log".toString(), layout: pattern(conversionPattern: '%d{dd-MM-yyyy HH:mm:ss,SSS} %5p%c{1} - %m%n'), maxFileSize: '1MB' 
    file name: 'stacktrace', file: "${System.properties.getProperty('catalina.base')}${File.separator}logs${File.separator}stacktrace.out".toString(), layout: pattern(conversionPattern: '%c{2} %m%n') 
    console name:'stdout', layout:pattern(conversionPattern: '%c{2} %m%n') 
    } 

    error stacktrace: "StackTrace" 

    error 'org.codehaus.groovy.grails.web.servlet', // controllers 
      'org.codehaus.groovy.grails.web.pages', // GSP 
      'org.codehaus.groovy.grails.web.sitemesh', // layouts 
      'org.codehaus.groovy.grails.web.mapping.filter', // URL mapping 
      'org.codehaus.groovy.grails.web.mapping', // URL mapping 
      'org.codehaus.groovy.grails.commons', // core/classloading 
      'org.codehaus.groovy.grails.plugins', // plugins 
      'org.codehaus.groovy.grails.orm.hibernate', // hibernate integration 
      'org.springframework', 
      'org.hibernate', 
      'net.sf.ehcache.hibernate' 

    warn 'org.mortbay.log' 
    info 'grails.app' 

    root { 
    info applog 
    error 'stdout' 
    additivity=false 
    } 
} 

내 응용 프로그램 파일에 출력 된 로그 괜찮 :

나는 로깅을위한 다음과 같은 구성을 가지고있다. 문제는 catalina.out이 각 행을 복제한다는 것입니다. 나는 catalina.out이 너무 많이 자라길 원치 않는다. 그리고 나는 catalina.out에서만 WARN 이상을 원합니다. 어떻게해야합니까?

업데이트 : 위의 질문을 업데이트했습니다. 이전에는 메시지가 catalina에서 두 번 기록되었다고 표시했습니다. 나는 그것을 고치는 방법을 발견했다. 그러나, 나는 아직도 원하지 않는 메시지를 한 번 기록한다. 나는 단지 WARN 메시지 만 원한다.

업데이트 2 : 문제를 알고 있지만 해결 방법을 모릅니다. catalina.out 로그 파일은 위의 구성을 통해 구성되지 않습니다. 기본 catalina.sh 시작 스크립트에서 모든 표준 출력은 catalina.out 파일에 기록됩니다. 따라서 appLog에 기록되는 내 로그 메시지는 stdout에 기록됩니다. 그래서 실제 문제는 위의 설정 파일을 기반으로 왜 내 appLog의 내용이 stdout으로 출력되는지입니다. 내가 생각

답변

1

참고 : RTFM !!!!

Grails 로깅 문서의 잘못된 버전을 읽었습니다. 최신 버전은 here이며 로깅이 잘 설명되어 있습니다. 나의 필요도 약간 바뀌었다. 모든 오류 (이상)는 catalina.out (일명 stdout)에 기록됩니다. 내 appLog는 INFO에있는 모든 것을 올바르게 기록합니다. 내가 catalina.out 모든 경고 메시지를 기록하고 싶었

, 나는 다음과 같은 추가 :

root{ 
    warn() 
} 

다음은 표준 출력에서 ​​모든 내 응용 프로그램 로그를 제거합니다

log4j = { 
    appenders { 
    rollingFile name: 'applog', file: ${System.properties.getProperty('catalina.base')}${File.separator}logs${File.separator}application.log".toString(), layout: pattern(conversionPattern: '%d{dd-MM-yyyy HH:mm:ss,SSS} %5p %c{1} - %m%n'), maxFileSize: '10MB' 
    console name: 'stdout', layout:pattern(conversionPattern: '%c{2} %m%n'), threshold: org.apache.log4j.Level.WARN 
    } 
    error 'org.codehaus.groovy.grails.web.servlet', // controllers 
      'org.codehaus.groovy.grails.web.pages', // GSP 
      'org.codehaus.groovy.grails.web.sitemesh', // layouts 
      'org.codehaus.groovy.grails.web.mapping.filter', // URL mapping 
      'org.codehaus.groovy.grails.web.mapping', // URL mapping 
      'org.codehaus.groovy.grails.commons', // core/classloading 
      'org.codehaus.groovy.grails.plugins', // plugins 
      'org.codehaus.groovy.grails.orm.hibernate', // hibernate integration 
      'org.springframework', 
      'org.hibernate', 
      'net.sf.ehcache.hibernate' 

    warn 'org.mortbay.log' 

    info applog: ['grails.app', 'myapp', 'com.myapp'] 
} 
0

나는 내가 당신이 참조하고 생각 펜더를 참조 할 귀하의 사이트 -를 위해 위의 경고 및 구성된 로거이 표시되지 않는 온 무슨 일이 일어나고 있는지 볼 수 있지만, 당신은 구성해야 원하는 수준의 로거를 사용하십시오. here을 참조하십시오. 귀하의 사이트가 mysite.some.packages 인 경우

예를 들어, 수준의 모든 메시지를 기록 로거를 만들 수 있습니다> = rollingfile에 사이트에 경고 : 자체에

warn rollingFile: "mysite" 
+0

좀 더 정보를 넣어 문제에 – Tihom

관련 문제