2012-07-26 2 views
0

나는 나의 Grails의에서 1.3.7 응용 프로그램을 기록하고 있고 로그에 기록을 중복 본질적으로보고 있어요 :의 log4j 중복 로깅 Grails는

12/07/25 23:57:39 TRACE querium.SearchService: setting snippet for posting 1855803974 [null] 54: document 1534340330 [632] 
25 Jul 2012 23:57:39,943  7851 TRACE pool-1-thread-1 SearchService:? gene 60258782 - setting snippet for posting 1855803974 [null] 54: document 1534340330 [632] 

내 기록은 다음과 같이 구성되어

appenders { 
    // appender for usage tracking 
    appender new org.apache.log4j.RollingFileAppender(
     name:"usageAppender", 
     maxFileSize:"100KB", 
     maxBackupIndex: 10000, 
     file:"usage.log", // "/tmp/logs/usage.log", 
     layout:pattern(conversionPattern: '%d{DATE} %5p %c{1}:%L - %m%n') 
    ) 
    appender new org.apache.log4j.RollingFileAppender(
     name:"querium", 
     maxFileSize:"1000KB", 
     maxBackupIndex: 10000, 
     file:"querium.log", // "/tmp/logs/querium.log", 
     layout:pattern(conversionPattern: '%d{DATE} %8X{memoryused} %5p %t %c{1}:%L %X{username} %X{request} - %m%n') 
    ) 
    console name:'stdout', layout:pattern(conversionPattern: '%d{DATE} %8X{memoryused} %5p %t %c{1}:%L %X{username} %X{request} - %m%n') 
} 
root { 
    error 'querium', 'stdout' 
} 

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' 

warn 'org.mortbay.log' 
debug 'grails.app.service' 
trace 'grails.app.service.backgroundservice' 
error 'org.hibernate.SQL' 
trace 'grails.app.controller.com.fxpal.querium.UiController' 
trace 'grails.app.controller.com.fxpal.querium.CommentController' 
warn 'grails.app.controller.com.fxpal.querium.TopicController' 
off 'grails.app.service.com.fxpal.redis.RedisService' 
trace 'grails.app.service.com.fxpal.querium.SearchService' 
debug 'com.fxpal.cloudwork.docubrowse.SearchDocubrowse' 
off 'grails.app.service.com.fxpal.proxy.ProxyService' 

debug 'org.codehaus.groovy.grails.plugins.springsecurity.*' 
debug 'com.fxpal.querium.CiteSeerDocumentParser' 

debug 'com.fxpal.querium.LoggingFilters' 
    info 'usageAppender':'usage.gui' 

올바른에게 데이터는 usageAppender입니다. 이 아케나에서 연습 한 사람이 기록을 두 배로 늘리는 이유를 파악할 수 있습니까? 나머지 기록은 남과 다른 기록이 될 수 있습니까?

수정 2012 년 7 월 26 일 : 나머지 로깅 구성이 추가되었습니다.

+0

"명확성을 위해 삭제 된"로거 정의를 복원 할 수 있습니까? 이 스 니펫에는 사용자가 보는 효과를 유발할 수있는 내용이 전혀 표시되지 않지만 생략 된 부분에는 설명하는 내용이있을 수 있습니다. 또한, stdout 또는 querium.log에서 중복 메시지를 어디서 볼 수 있습니까? –

+0

귀하의 요청에 따라 질문의 샘플 코드가 수정되었습니다. 나는 tomcat 로그 디렉토리에있는'catalina.out'에 이중 메시지를보고 있습니다. 'querium.log' 파일은 정확하고'DD MMM YYYY' 형식으로 시작하는 레코드 만 포함합니다 (질문 상단의 로그 샘플의 두 번째 줄). –

답변

1

루트 로거에 부착 된 두 개의 서로 다른 콘솔 어 펜더있는 것처럼 당신이 모습을보고있는 출력 (또는 루트 로거에 부착 가능 하나와 로거 트리 아래 어딘가에 부착 된 다른 하나). 당신이보고있는 두 번째 줄은 자신의 stdout 로거 형식이지만 첫 번째 줄은 Grails의 기본 형식 아니다

%d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n 

의 패턴 레이아웃과 일치한다. Grails log4j DSL 파서의 코드를 확인한 결과, 이 아니라고보고했습니다.은 DSL 처리를 시작하기 전에 로깅 구성을 재설정했습니다. 따라서 나는 당신이 당신의 클래스 패스 어딘가에 길 잃은 log4j.properties 또는 log4j.xml 파일이 의심 DSL 파서 실행되기 전에이 여분의 펜더를 만드는 (중 src/java 또는 유사한에서, 또는 앱에 따라 달라집니다 JAR 파일 중 하나 묻혀진). 당신은

this.getClass().getClassLoader().getResources("log4j.properties").each { 
    println it 
} 

(마찬가지로의 log4j.xml에 대한)을 수행하여 BootStrap.init에서 이것을 확인할 수 있습니다. 가 JAR 내부로 밝혀 당신이 쉽게 절제 할 수없는 경우 당신은 (자신의 appenders 섹션 전에) 당신의 log4j 폐쇄의 첫 번째 일이 같은 LogManager.loggerRepository.resetConfiguration()를 호출 시도 할 수 있습니다.

+0

다른 방법으로 logback.groovy를 검사하여 logger ('db.manager', DEBUG, [ 'STDOUT'], false)와 같은 응용 프로그램 로거에 additivity = "false"를 추가 할 수 있습니다. https : //logback.qos.ch/manual/groovy.html – cleverpig