【问题标题】:How do I direct logging output to exclusively to different loggers with Log4J如何使用 Log4J 将日志输出专门定向到不同的记录器
【发布时间】:2012-04-16 03:44:33
【问题描述】:

我想使用 Log4J 将非常特定性质的输出发送到与为其他所有内容指定的不同的日志中。现在,我有一个 log4j.properties,看起来有点像:

log4j.rootLogger=INFO,catchall
log4j.logger.SPECIAL_LOGGER=INFO,specials
... catchall, specials appenders defined

我只想要 specials appender 中的 Logger SPECIAL_LOGGER 的输出 - 很简单 - 但我不希望 SPECIAL_LOGGER 的输出在我的 catchall appender 中。我认为这意味着我无法使用日志级别做我需要的事情。

有什么想法吗?

【问题讨论】:

    标签: java log4j appender


    【解决方案1】:

    我在我的应用程序中使用了它来使其工作。 您需要在 log4j.xml 中创建单独的附加程序,这样可能会有所帮助:

    <appender name="myAppender" class="org.apache.log4j.DailyRollingFileAppender">
        <param name="file" value="logs/date.log" />     
        <param name="append" value="true" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{HH:mm:ss z} %-5p [%c{1}] [%t] %C:%L - %m%n" />
        </layout>
    </appender>
    

    在 appender 中使用不同的参数,您可以按照自己的方式自定义它。

    【讨论】:

    • 我已经在使用附加程序,但我需要从其中排除。 @adarshr 的答案似乎是正确的。
    【解决方案2】:

    只需设置适当的可加性即可。将此行添加到您的 log4j 配置中。

    log4j.additivity.SPECIAL_LOGGER=false
    

    【讨论】:

    • 我不知道该功能。一个很好的答案,正是我需要的。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2012-04-22
    • 1970-01-01
    • 2013-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-12
    相关资源
    最近更新 更多