2016-08-11 1 views
1

미리 감사드립니다. 3 가지 유형의 로그 파일 (정보, 디버그, 오류)을 생성하는 log4j 2 XML 파일을 생성했습니다.log4j 2의 다른 레벨의 로그가 정확한 로그를 표시하지 않습니다.

<?xml version="1.0" encoding="UTF-8"?> 
<Configuration monitorInterval="30" status="DEBUG"> 
    <Appenders> 
     <File name="errorFile" fileName="D:/logger/error.log" append="false"> 
      <PatternLayout pattern="%d{yyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> 
     </File> 
     <File name="debugFile" fileName="D:/logger/debug.log" append="false"> 
      <PatternLayout pattern="%d{yyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> 
     </File> 
     <File name="infoFile" fileName="D:/logger/info.log" append="false"> 
      <PatternLayout pattern="%d{yyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> 
     </File> 
    </Appenders> 
    <Loggers> 
     <logger name="com.vt.logger" level="info" additivity="false"> 
      <AppenderRef ref="errorFile" level="ERROR"/> 
      <AppenderRef ref="debugFile" level="DEBUG"/> 
      <AppenderRef ref="infoFile" level="INFO"/> 
     </logger> 
    </Loggers> 
</Configuration> 

을 내 주요 프로그램 : 내 XML은 다음과 같이

public class LoggerLevelTest { 
    private final static Logger log = LogManager.getLogger(LoggerLevelTest.class); 

    public static void main(String[] args) { 
     log.info("This is info log"); 
     log.debug("This is debug log"); 
     log.error("This is error log"); 
    } 
} 

내 질문 : 이 프로그램은하는 error.log는 ERROR 레벨의 로그하지만 디버그를 포함하는 3 개 별도의 파일이 생성됩니다. log 및 info.log에는 ERROR 및 INFO 수준의 로그가 포함됩니다.

왜 나는 debug.log 및 info.log 파일에 ERROR 및 INFO 로그를 기록합니까?

답변

0

ThresholdFilter (manual)를 사용해야합니다. appender는 다음과 같이 보일 것입니다 :

<Appenders> 
    <File name="errorFile" fileName="D:/logger/error.log" append="false"> 
     <ThresholdFilter level="error"onMatch="ACCEPT" onMismatch="DENY"/> 
     <PatternLayout pattern="%d{yyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> 
    </File> 
    <File name="debugFile" fileName="D:/logger/debug.log" append="false"> 
     <ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY"/> 
     <PatternLayout pattern="%d{yyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> 
    </File> 
    <File name="infoFile" fileName="D:/logger/info.log" append="false"> 
     <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY" 
     <PatternLayout pattern="%d{yyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> 
    </File> 
</Appenders> 
관련 문제