【问题标题】:different level of log in log4j 2 are not showing correct loglog4j 2中不同级别的日志没有显示正确的日志
【发布时间】:2023-03-25 00:51:01
【问题描述】:

在此先感谢,我创建了 log4j 2 XML 文件,该文件创建了 3 种类型的日志文件 - 信息、调试、错误。 我的 XML 看起来像这样:

<?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 仅包含 ERROR 级别的日志,但 debug.log 和 info.log 将包含 ERROR 和 INFO 级别的日志。

为什么我在 debug.log 和 info.log 文件中收到 ERROR 和 INFO 日志??

【问题讨论】:

    标签: logging log4j2 log-level


    【解决方案1】:

    您应该使用 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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-11
      • 1970-01-01
      相关资源
      最近更新 更多