【问题标题】:Set differnet levels of logging for loggers in log4j在 log4j 中为记录器设置不同级别的记录
【发布时间】:2012-02-14 20:55:20
【问题描述】:

我在我的应用程序中使用 log4j - 我需要查看所有日志消息,所以我定义了

# General configuration
log4j.rootLogger = ALL, ConsoleAppender

# Appender configuration
log4j.appender.ConsoleAppender = org.apache.log4j.ConsoleAppender
log4j.appender.ConsoleAppender.layout = org.apache.log4j.PatternLayout
log4j.appender.ConsoleAppender.layout.ConversionPattern = %5p (%c) %m%n

但是,在我开始使用 Apache 的 HTTPClient 库(顺便说一句,这很棒)之后,我的控制台被它的日志记录弄得一团糟——一切都被记录了下来,我再也看不到我自己的应用程序的日志输出了。

那么我如何告诉 HTTPClient 库它应该只记录 WARN 消息,而我自己的应用程序仍然记录 ALL 级别?

我使用

创建我的应用程序记录器
Logger logger = Logger.getLogger(MyClass.class);
PropertyConfigurator.configure("log4j.properties");

【问题讨论】:

    标签: java logging log4j httpclient


    【解决方案1】:

    这很简单。只需添加以下行。

    log4j.logger.org.apache.commons.httpclient=WARN
    

    同样,您可以为任何包com.foo 或类com.foo.Bar 配置级别,方法是将其附加到前缀log4j.logger,如下所示:

    log4j.logger.com.foo=MYLEVEL
    log4j.logger.com.foo.Bar=DEBUG
    

    【讨论】:

    • 你应该补充一点,这个属性的左边部分由两部分组成:log4j.loggerorg.apache.commons.httpclient。第二部分命名您希望此日志级别应用到的包。
    • @Tichodroma 这对于任何使用过 log4j 或 HttpClient 的人来说都是显而易见的。
    • 也许是,也许不是:)
    • 请注意 log4j.logger.org.apache.commons.httpclient=WARN 将记录所有内容 >= WARN,而不仅仅是 WARN。
    • @quaylar 我认为这是可取的,为什么人们只想WARN 而忘记ERRORs?
    猜你喜欢
    • 2018-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-07
    相关资源
    最近更新 更多