【问题标题】:LOG4J: One appender by message levelLOG4J:按消息级别的一个附加程序
【发布时间】:2011-10-14 03:26:04
【问题描述】:

我想要 X 个 log4j 附加程序,一个到文件中的消息级别,并且全部在控制台中打印。但我不明白。

我的实际 log4j.properties:

log4j.rootLogger=ALL, CONSOLA

log4j.appender.CONSOLA=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLA.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLA.layout.ConversionPattern=%-4r %d %-5p %c - %m%n

log4j.appender.WARNLOG=org.apache.log4j.FileAppender
log4j.appender.WARNLOG.threshold=WARN
log4j.appender.WARNLOG.file=XX/web/WEB-INF/serverlogs/warn-server.log
log4j.appender.WARNLOG.layout=org.apache.log4j.PatternLayout
log4j.appender.WARNLOG.layout.ConversionPattern=%-4r %d %-5p %c - %m%n
log4j.appender.WARNLOG.append=true
log4j.appender.WARNLOG.MaxFileSize=250KB
log4j.appender.WARNLOG.MaxBackupIndex=backup

log4j.appender.FATALLOG=org.apache.log4j.FileAppender
log4j.appender.FATALLOG.threshold=FATAL
log4j.appender.FATALLOG.file=XX/web/WEB-INF/serverlogs/fatal-server.log
log4j.appender.FATALLOG.layout=org.apache.log4j.PatternLayout
log4j.appender.FATALLOG.layout.ConversionPattern=%-4r %d %-5p %c - %m%n
log4j.appender.FATALLOG.append=true
log4j.appender.FATALLOG.MaxFileSize=250KB
log4j.appender.FATALLOG.MaxBackupIndex=backup

log4j.logger.com.XX=WARN, WARNLOG
log4j.logger.com.XX=FATAL, FATALLOG

已解决:

我使用 LevelRangeFilter

<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>

    <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%-4r %d %-5p %c - %m%n"/>
        </layout>
    </appender>

    <appender name="FATALLOG" class="org.apache.log4j.FileAppender">
        <param name="File" value="xx/web/WEB-INF/serverlogs/fatal-server.log"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%-4r %d %-5p %c - %m%n"/>
        </layout>
        <filter class="org.apache.log4j.varia.LevelRangeFilter">
            <param name="LevelMax" value="FATAL"/>
            <param name="LevelMin" value="FATAL"/>
            <param name="AcceptOnMatch" value="true"/>
        </filter>
    </appender>

    <appender name="WARNLOG" class="org.apache.log4j.FileAppender">
        <param name="File" value="xx/web/WEB-INF/serverlogs/warn-server.log"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%-4r %d %-5p %c - %m%n"/>
        </layout>
        <filter class="org.apache.log4j.varia.LevelRangeFilter">
            <param name="LevelMax" value="WARN"/>
            <param name="LevelMin" value="WARN"/>
            <param name="AcceptOnMatch" value="true"/>
        </filter>
    </appender>

    <logger name="com.xx">
        <appender-ref ref="CONSOLE" /> 
        <appender-ref ref="FATALLOG" /> 
        <appender-ref ref="WARNLOG" /> 
    </logger>

</log4j:configuration>

【问题讨论】:

  • 您所做的是否将 WARN + ERROR + FATAL 发送到 WARNLOG,而您只想要 WARN?或者它根本不写入任何其他日志? (我知道您可以通过使用 log4j.rootLogger=ALL, CONSOLA, WARNLOG, FATALLOG 来获得前一种行为,但我意识到这可能不是您所需要的。)

标签: java log4j appender


【解决方案1】:

您必须有不同的记录器或使用 LevelMatchFilter。

有关更多信息,您可以搜索完整的 Log4j 手册。

你可以找到它herehere

【讨论】:

  • 再次您好,谢谢,了解 LevelMatchFilter 我看到 LevelRangeFilter 更好地解决问题,我也看到 xml 比属性文件更好。谢谢大家。
  • 手动链接+1;每次我查找 Log4J 时,我都会找到购买这本书的链接,而我只是想要一条信息。
【解决方案2】:

使用LevelMatchFilter 或修改它。

【讨论】:

    猜你喜欢
    • 2012-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-07
    • 2019-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多