如何禁用类或整个包的记录器?
Posted
技术标签:
【中文标题】如何禁用类或整个包的记录器?【英文标题】: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 可以在包级别设置日志记录级别。它还支持“关闭”级别。 谢谢,我希望我能批准这个答案,但这是评论.. 【参考方案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.***.utils 包下的所有内容都设置为 info,而 com.***.servlet.Dispatcher 专门设置为 warn:
org.apache.commons.logging.simplelog.log.com.***.utils=info
org.apache.commons.logging.simplelog.log.com.***.servlet.Dispatcher=warn
commons-logging.properties 文件应包含:
org.apache.commons.logging.Log=org.apache.commons.logging.impl.SimpleLog
文档here 和here。
【讨论】:
我知道。问题是如何在 SimpleLog 中执行类似“log4j.logger.在 Log4j 中,您可以为通过字符串标识的指定包、类或记录器指定日志记录级别。您只需将其写入 log4j.properties 文件即可:
log4j.logger.<your package> = DEBUG|INFO|OFF|WARN...
【讨论】:
我怎样才能在课堂上处理这个记录器?以上是关于如何禁用类或整个包的记录器?的主要内容,如果未能解决你的问题,请参考以下文章
我可以使用 GhostDoc 将文档添加到整个类或代码文件吗?
如果发生异常,如何禁用记录 Kafka 批处理中的所有消息?
如何禁用 PyTorch-Lightning 记录器的日志记录?