记录器到不同阈值的多个追加器

  • 本文关键字:追加 阈值 记录器 java log4j
  • 更新时间 :
  • 英文 :


我有两个附加器。 一个附加到控制台,一个附加到日志文件。 但这并不那么重要。 我遇到的问题是我希望所有内容都转到 INFO 级别的文件。 但是,控制台是不同的。有一堆记录器我不想在 WARN 或 INFO 级别触摸控制台,因为它们喷出的信息比用户需要的要多得多。

假设我有三个记录器 A、B、C。 A、B 和 C 都应该转到 INFO 级别的文件追加器。 A 应转到控制台以获取 INFO,B 应转到控制台以获取警告,C 应转到控制台以获取错误。 执行此操作的 log4j 配置是什么样的?

这样的事情应该可以工作:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="MyApp" packages="">
<Appenders>
    <RollingFile name="RollingFile" fileName="logs/app.log" filePattern="logs/app-%d{MM-dd-yyyy}.log.gz"
                 ignoreExceptions="false">
        <PatternLayout>
            <Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
        </PatternLayout>
        <TimeBasedTriggeringPolicy />
    </RollingFile>
    <Console name="STDOUT" target="SYSTEM_OUT" ignoreExceptions="false">
        <PatternLayout pattern="%m%n"/>
    </Console>
</Appenders>
<Loggers>
    <Logger name="A" level="trace" additivity="false">
        <AppenderRef ref="STDOUT" level="info" />
        <AppenderRef ref="RollingFile" level="info"/>
    </Logger>
    <Logger name="B" level="trace" additivity="false">
        <AppenderRef ref="STDOUT" level="warn" />
        <AppenderRef ref="RollingFile" level="info"/>
    </Logger>
    <Logger name="C" level="trace" additivity="false">
        <AppenderRef ref="STDOUT" level="error" />
        <AppenderRef ref="RollingFile" level="info"/>
    </Logger>
    <Root level="trace">
        <AppenderRef ref="STDOUT" level="trace" />
        <AppenderRef ref="RollingFile" level="trace"/>
    </Root>
</Loggers>

最新更新