2

thanks in advance , I have created log4j 2 XML file that creates 3 type of log file - info , debug ,error. My XML look like this :

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

and my main program :

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");
    }
}

My Question: The program will create 3 separate files in which error.log contain only ERROR level logs but debug.log and info.log will contain ERROR and INFO level logs.

Why I am getting ERROR and INFO logs in debug.log and info.log files ??

Bhargav Rao
  • 50,140
  • 28
  • 121
  • 140
kalyani
  • 23
  • 4

1 Answers1

0

You should use ThresholdFilter (manual). You appender should look something like this:

<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>
asch
  • 1,923
  • 10
  • 21