Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否可以使用Log4J只记录一级消息_Java_Logging_Log4j - Fatal编程技术网

Java 是否可以使用Log4J只记录一级消息

Java 是否可以使用Log4J只记录一级消息,java,logging,log4j,Java,Logging,Log4j,如果我将日志级别设置为DEBUG,则日志级别>=DEBUG的所有消息都将被记录/打印。 但是我是否可以将日志级别设置为仅调试,以便打印仅具有带有调试的日志级别的消息。或者可以给出一个范围,例如打印日志级别为>=DEBUG但

如果我将日志级别设置为DEBUG,则日志级别>=DEBUG的所有消息都将被记录/打印。
但是我是否可以将日志级别设置为仅调试,以便打印仅具有带有调试的日志级别的消息。或者可以给出一个范围,例如打印日志级别为>=DEBUG但的所有消息。也许可以使用LevelMatchFilter

在某些情况下,您必须根据级别将日志写入不同的输出。如何通过简单地配置Log4j来实现?下面有一些方法


正如Jarle所说,您必须使用LevelMatchFilter。 我将通过一个简单的考试来演示:

log4j.rootLogger = WARN, admin 
log4j.appender.admin=org.apache.log4j.rolling.RollingFileAppender
        log4j.appender.admin.rollingPolicy = org.apache.log4j.rolling.TimeBasedRollingPolicy
        log4j.appender.admin.rollingPolicy.FileNamePattern = Files\\TestLevels-%d{dd-MM-yyy}.txt
        log4j.appender.admin.layout = org.apache.log4j.PatternLayout
        log4j.appender.admin.layout.ConversionPattern = Date: %d{dd-MM-yyyy} Time: %d{HH:mm:ss} Message [%m]%n
        log4j.appender.admin.filter.01=org.apache.log4j.varia.LevelMatchFilter
        log4j.appender.admin.filter.01.LevelToMatch=FATAL
        log4j.appender.admin.filter.01.AcceptOnMatch=false
        log4j.appender.admin.filter.02=org.apache.log4j.varia.LevelMatchFilter
        log4j.appender.admin.filter.02.LevelToMatch=ERROR
        log4j.appender.admin.filter.02.AcceptOnMatch=true
        log4j.appender.admin.filter.03=org.apache.log4j.varia.LevelMatchFilter
        log4j.appender.admin.filter.03.LevelToMatch=WARN
        log4j.appender.admin.filter.03.AcceptOnMatch=false

在我的源代码中,我仅向名为TestLevels.txt的文件中添加错误消息

如果您计划对原始设计执行某些操作,您可以修改其源代码。那么,为什么不遵循设计呢?很久以来,我们一直在尝试解决同样的问题。这是非常有用的。示例:System.out仅获取调试。System.err获取错误和致命错误。否则,所有错误将显示两次。这很烦人。此链接重定向到登录页面。