2017-05-17 5 views
0

을 사용하여 웹 및 XML 컨텐트를 특정 파일에 기록하는 log4j2 애 펜더가 있습니다.log4j2를 사용하여 로그 문을 특정 파일로 라우팅하는 방법은 무엇입니까?

<Appenders> 
     <RollingRandomAccessFile name="WEB" fileName="web.log"> 
     <Filters> 
      <ThresholdFilter level="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/> 
      <MarkerFilter marker="WEB" onMatch="ACCEPT" onMismatch="DENY" /> 
     </Filters> 
     </RollingRandomAccessFile> 
</Appenders> 

다음과 같이 내가 성공적으로 내 코드에서 사용할 수 있습니다 :

<Appenders> 
    <Console name="CONSOLE" target="SYSTEM_OUT"> 
     <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY" /> 
    </Console> 
    <RollingRandomAccessFile name="WEB" .../> 
</Appenders> 

<Loggers> 
    <Root level="all"> 
     <AppenderRef ref="CONSOLE" /> 
     <AppenderRef ref="WEB" /> 
    </Root> 
</Loggers> 

:하지만 이제 다음 클래스를

logger.info(MarkerFactory.getMarker("WEB"), "myinfo"); 

는 또한 나는 내용이 콘솔을 SYSOUT을 인쇄하려면 DEBUG 모드로 로그인해야하며 web.log 파일에만 로그인해야하며 콘솔에서도 볼 수 있습니다.

<Loggers> 
     <logger name="org.springframework.web.filter.CommonsRequestLoggingFilter" 
       level="DEBUG"> 
      <AppenderRef ref="WEB" /> 
     </logger> 
</Loggers> 

결과 :

1) 필터 내용이 CONSOLE에 파일에 인쇄 된 것이 아니라 : 2 문제가있다. 나는 둘 다에 로그인하고 싶다.

2) 마커없이 로그 된 일반 정보 로깅 (예 : logger.info("test"))은 WEB.log 파일에도 기록됩니다. 나는 이것을 막고 싶다.

구성이 잘못되었습니다.

답변

0

마커가 지정되지

  1. 수정 됨 ->
  2. 웹 마커가 지정한 콘솔에 로그인 - 웹에 로그인>
  3. 사용
  4. 필터 로거 -> 웹 콘솔

당신에게에 로그인 3 개의 로거를 사용하여이를 달성 할 수 있습니다. 루트 로거가 콘솔 <AppenderRef ref="CONSOLE" />에만 추가되도록 설정하십시오. 필터 로거를 모두 (<AppenderRef ref="CONSOLE" /><AppenderRef ref="WEB" />)에 추가하도록 설정하십시오. 원하는 수준의 세 번째 로거를 만들고이 파일을 <AppenderRef ref="WEB" />에 의해 web.log에만 추가하십시오. (마커를 지정하는 경우 실제로 마지막 단계가 필요하지 않을 수도 있습니다. 마커를 지정하면 WEB가 웹에 로그인하도록 지시합니다)

+0

WEB 마커 문을 기록하려고합니다. web.log에만 있습니다. 하지만 CommonsRequestLoggingFilter 출력을 콘솔 + WEB 마커에 모두 기록하고 싶습니다. – membersound

+0

감사합니다, 포인트 2에 관해서 : 나는 루트 로거 *가 항상 WEB에 로그하는 것을 원하지 않는다. CommonsRequestLoggingFilter가 WEB에만 로깅되기를 원합니다. 다른 모든 루트 로깅은 변경되지 않아야합니다. – membersound

+0

웹 마커가 없으면 어떻게해야합니까? 그냥 콘솔에 로그인해야합니까? – Ishnark