2014-04-07 2 views
0

두 개의 애 퍼더가 있습니다. 하나는 콘솔에 연결되고 다른 하나는 로그 파일에 연결됩니다. 하지만 그렇게 중요하지 않습니다. 내가 가지고있는 문제는 모든 것이 INFO 레벨의 파일로 가기를 원한다는 것입니다. 그러나 콘솔은 다릅니다. 사용자가 필요로하는 것보다 훨씬 많은 정보를 스프레이하기 때문에 WARN 또는 INFO 수준에서 콘솔을 만지는 것을 원치 않는 많은 로거가 있습니다.로거에 의해 서로 다른 임계 값의 여러 애 퍼더로 로거

그래서 A, B, C 세 개의 로거가 있습니다. A, B 및 C는 모두 INFO 수준의 파일 첨부 자로 이동해야합니다. A는 INFO의 콘솔로 이동해야하며 B는 WARN의 콘솔로 이동해야하고 C는 ERROR의 콘솔로 이동해야합니다. log4j 설정은 어떻게 보이나요?

답변

0

이런 식으로 뭔가 작업을해야합니다 :

<?xml version="1.0" encoding="UTF-8"?> 
<Configuration status="warn" name="MyApp" packages=""> 
<Appenders> 
    <RollingFile name="RollingFile" fileName="logs/app.log" filePattern="logs/app-%d{MM-dd-yyyy}.log.gz" 
       ignoreExceptions="false"> 
     <PatternLayout> 
      <Pattern>%d %p %c{1.} [%t] %m%n</Pattern> 
     </PatternLayout> 
     <TimeBasedTriggeringPolicy /> 
    </RollingFile> 
    <Console name="STDOUT" target="SYSTEM_OUT" ignoreExceptions="false"> 
     <PatternLayout pattern="%m%n"/> 
    </Console> 
</Appenders> 
<Loggers> 
    <Logger name="A" level="trace" additivity="false"> 
     <AppenderRef ref="STDOUT" level="info" /> 
     <AppenderRef ref="RollingFile" level="info"/> 
    </Logger> 
    <Logger name="B" level="trace" additivity="false"> 
     <AppenderRef ref="STDOUT" level="warn" /> 
     <AppenderRef ref="RollingFile" level="info"/> 
    </Logger> 
    <Logger name="C" level="trace" additivity="false"> 
     <AppenderRef ref="STDOUT" level="error" /> 
     <AppenderRef ref="RollingFile" level="info"/> 
    </Logger> 
    <Root level="trace"> 
     <AppenderRef ref="STDOUT" level="trace" /> 
     <AppenderRef ref="RollingFile" level="trace"/> 
    </Root> 
</Loggers> 

+0

는 log4j2를 사용하는 가정 – Steve

관련 문제