2013-08-05 1 views
1

tomcat에서 서브 프로젝트에 공통 log4j xml을 사용하려고합니다. 이미 배포 된 상위 프로젝트가 있고 상위 프로젝트의 일부는 다른 세 가지 프로젝트입니다. 두 개의 프로젝트 A와 B가 이미 존재하고 로깅이 정상적으로 작동합니다. 나는 새로운 프로젝트 C를 추가하고 아래와 같이 log4j를 업데이트했다. ProjectC.log 파일이 생성되는 것을 볼 수 있습니다 (Tomcat이 시작될 때 발생합니다). 그러나이 파일 (또는 다른 파일)에는 Project C 관련 로그 문이 없습니다. 내가 log4j에 대한 종속성을 선언 한여러 서브 프로젝트에 대해 공통 log4j xml 구성

LoggerFactory.getLogger(clazz) 

(1.2.14) :

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" 
debug="true"> 

<appender name="rootAppender" class="org.apache.log4j.ConsoleAppender"> 
    <layout class="org.apache.log4j.PatternLayout"> 
     <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n"/> 
    </layout> 
</appender> 

<appender name="ProjectAAppender" class="org.apache.log4j.RollingFileAppender"> 
    <param name="file" value="${catalina.base}/logs/projectA.log"/> 
    <param name="Append" value="true"/> 
    <param name="MaxFileSize" value="100000KB"/> 
    <param name="MaxBackupIndex" value="3"/> 
    <layout class="org.apache.log4j.PatternLayout"> 
     <param name="ConversionPattern" value="%d [%t] %-5p %c %x - %m%n"/> 
    </layout> 
</appender> 

<appender name="ProjectBAppender" class="org.apache.log4j.RollingFileAppender"> 
    <param name="file" value="${catalina.base}/logs/ProjectB.csv"/> 
    <param name="Append" value="true"/> 
    <param name="MaxFileSize" value="10000KB"/> 
    <param name="MaxBackupIndex" value="3"/> 
    <layout class="org.apache.log4j.PatternLayout"/> 
</appender> 

<appender name="ProjectCAppender" class="org.apache.log4j.RollingFileAppender"> 
    <param name="file" value="${catalina.base}/logs/ProjectC.log"/> 
    <param name="Append" value="true"/> 
    <param name="MaxFileSize" value="10000KB"/> 
    <param name="MaxBackupIndex" value="3"/> 
    <layout class="org.apache.log4j.PatternLayout"/> 
</appender> 

<logger name="projA" additivity="true"> 
    <level value ="DEBUG" /> 
    <appender-ref ref="ProjectAAppender"/> 
</logger> 
<logger name="projA.Performance" additivity="true"> 
    <level value ="INFO" /> 
    <appender-ref ref="ProjectBAppender"/> 
</logger> 
<logger name="projC" additivity="true"> 
    <level value ="DEBUG" /> 
    <appender-ref ref="ProjectCAppender"/> 
</logger> 
<root> 
    <priority value ="INFO" /> 
    <appender-ref ref="rootAppender"/> 
</root> 

내 log4j에 인스턴스가 SLF4J의 LoggerFactory을 사용 얻는 방법 : 이것은 내 현재의 log4j XML이다 내 pom에 slf4j-log4j12 (1.4.1) jar 파일이 있습니다. 이 설정은 프로젝트 C를 독립적으로 실행할 때 (junit 테스트 케이스 실행시) 잘 작동합니다. 프로젝트 C의 로깅을 어떻게 만들 수 있습니까? 내 log4j xml을 변경해야하는 변경 사항은 무엇입니까? 고맙습니다.

답변

0

밖으로 나옵니다 잘못된 속성 파일을 사용하고있었습니다. 실제 log4j.properties 파일에서 Project C라는 새 appender를 만들고 rootCategory에 등록하는 대신이 행을 추가해야했습니다.

log4j.logger.com.projectC.related.package=DEBUG, ProjectCAppender