如何禁用类或整个包的记录器?

时间:2011-02-11 19:03:41

标签: java apache-commons-logging

我正在使用apache.commons.logging,现在我想使用SimpleLog实现,但是当更改级别时,来自库的记录器就会出现。我想把它关掉。 是否有一种简单的方法来更改整个包的日志级别(可以log4j这样做)? 我试过设置

  

org.apache.commons.logging.simplelog.log.foo =致命

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

4 个答案:

答案 0 :(得分:88)

在Log4j中,您可以为由字符串标识的指定包,类或记录器指定日志记录级别。你只需在log4j.properties文件中写这个:

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

答案 1 :(得分:16)

您应该使用:

log4j.logger.foo = OFF

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

答案 2 :(得分:3)

如果使用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 :(得分:1)

使用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专门设置为警告

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