2016-08-11 84 views
1

在此先感謝,我創建了log4j 2 XML文件,它創建3種類型的日誌文件 - info,debug,error。 我的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> 

和我的主要程序:

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中僅包含錯誤日誌的水平,但調試3個單獨的文件。日誌和info.log將包含ERROR和INFO級別日誌。

爲什麼我收到ERROR和INFO日誌debug.log和info.log文件?

回答

0

您應該使用ThresholdFilter(manual)。你應該看起來像這樣:

<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>