【问题标题】:Is it possible to log only one level messages with Log4J是否可以使用 Log4J 仅记录一级消息
【发布时间】:2010-05-04 07:03:18
【问题描述】:

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

【问题讨论】:

  • 如果您打算对原始设计做一些事情,您可以修改其源代码。那么,为什么不按照设计呢?
  • 很长一段时间以来一直在尝试解决同样的问题。
  • 这非常有用。示例:System.out 仅获得调试。 System.err 得到错误和致命。否则所有错误都会出现两次。这很烦人。

标签: java logging log4j


【解决方案1】:

也许您可以使用 LevelMatchFilter?

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

http://wiki.apache.org/logging-log4j/LogToAppenderByLevel

【讨论】:

  • 此链接重定向到登录页面。
【解决方案2】:

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

在我的源代码中,我只将 ERROR 消息附加到名为 TestLevels.txt 的文件中

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-20
    • 2014-03-26
    • 2014-02-15
    相关资源
    最近更新 更多