【问题标题】:How to disable loggers of a class or of whole package?如何禁用类或整个包的记录器?
【发布时间】:2011-06-25 18:27:53
【问题描述】:

我正在使用Apache Commons Logging ™。现在我想使用SimpleLog 实现,但是当我更改级别时,库中的记录器就出来了。我希望它关闭它们。

是否有一种简单的方法可以更改整个包的日志级别(Log4j 可以这样做)?

我试过设置

org.apache.commons.logging.simplelog.log.foo=fatal

在属性文件中禁用(设置为致命是可以的)foo 记录器,但它不起作用(foo 是出现在输出中的记录器名称:[INFO] foo - Message)。

【问题讨论】:

  • 如果你有时间,我建议你看看 SLF4J。 slf4j.org/manual.html - 它充当实际日志框架之上的元层 - 包括 log4j。它很容易设置。是的 - log4j 可以在包级别设置日志记录级别。它还支持“关闭”级别。
  • 谢谢,我希望我能批准这个答案,但这是评论..

标签: java apache-commons-logging


【解决方案1】:

你应该使用:

log4j.logger.foo = OFF

请注意,“foo”不需要是包或类,而是任意字符串。我们例如有一个名为“SQL”的记录器,可以从许多类中调用。

【讨论】:

  • 我想在 simplelog 中进行。但我认为将其更改为 log4j 是一种解决方案。
  • log4j 是世界上使用最多的日志框架。只要坚持每个人都在使用的东西,您就可以从插件、自定义附加程序、过滤器等中获益。
  • 关键字是OFF,它在投票最多的答案中缺失。
【解决方案2】:

如果你使用 Spring Boot,你可以在 application.properties 文件中设置为OFF。示例:

logging.level.org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer=OFF

参考: https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-logging.html#boot-features-custom-log-levels

【讨论】:

    【解决方案3】:

    使用 Commons Logging 中的 SimpleLog 需要两个配置文件,除非您使用某些系统属性。这些文件是:commons-logging.properties 和 simplelog.properties。 您指定的日志级别属性应放在 simplelog.properties 中,例如:

    org.apache.commons.logging.simplelog.log.foo=warn
    

    其中“foo”是记录器名称。通常,这是包或包和类名。在以下示例中,com.stackoverflow.utils 包下的所有内容都设置为 info,而 com.stackoverflow.servlet.Dispatcher 专门设置为 warn

    org.apache.commons.logging.simplelog.log.com.stackoverflow.utils=info 
    org.apache.commons.logging.simplelog.log.com.stackoverflow.servlet.Dispatcher=warn 
    

    commons-logging.properties 文件应包含:

    org.apache.commons.logging.Log=org.apache.commons.logging.impl.SimpleLog
    

    文档herehere

    【讨论】:

    • 我知道。问题是如何在 SimpleLog 中执行类似“log4j.logger. = DEBUG|INFO|OFF|WARN...”的操作。
    • 我创建了一个小项目并测试了包级别的日志控制,它可以正常工作。我更新了我的示例以说明分层日志级别控制。如果它在您的环境中没有以这种方式工作,则可能没有检测到您的 simplelog.properties。当您更改其中的其他值时,它是否会影响输出(例如,使用 org.apache.commons.logging.simplelog.showdatetime=true/false 启用/禁用日期)?
    【解决方案4】:

    在 Log4j 中,您可以为通过字符串标识的指定包、类或记录器指定日志记录级别。您只需将其写入 log4j.properties 文件即可:

    log4j.logger.<your package> = DEBUG|INFO|OFF|WARN...
    

    【讨论】:

    • 我怎样才能在课堂上处理这个记录器?
    猜你喜欢
    • 2016-02-05
    • 1970-01-01
    • 1970-01-01
    • 2021-10-18
    • 2014-04-13
    • 2010-09-30
    • 1970-01-01
    相关资源
    最近更新 更多