2016-08-11 4 views
1

заранее, я создал log4j 2 XML-файл, который создает 3 типа файла журнала - информацию, отладочную ошибку. Мой 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"); 
    } 
} 

Мой вопрос: Программа создаст 3 отдельные файлы, в которых error.log содержат только журналы уровня ошибок, но отлаживать. log и 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> 
Смежные вопросы