2011-02-11 38 views
35

我正在使用apache.commons.logging,现在我想使用SimpleLog实现,但是当更改关卡时,库中的记录器出来了。我想让它关闭。 有没有简单的方法来改变整个包的日志级别(可以log4j做到这一点)?
我试图设置如何禁用某个类或整个包的记录器?

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

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

+1

如果你有我建议在看SLF4J的时间。 http://www.slf4j.org/manual.html - 它充当实际日志框架之上的元层 - 包括log4j。它非常容易设置。是的 - 使用log4j可以在包级别设置日志记录级别。它还支持“关闭”级别。 – 2011-02-11 19:16:21

+1

谢谢,我希望我可以批准这个答案,但是这是一条评论。 – Damian 2011-02-11 21:35:08

回答

74

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

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

我怎样才能在我的课堂上得到这个记录器的句柄? – 2017-03-01 13:09:03

11

你应该使用:

log4j.logger.foo = OFF 

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

+0

我想在简单的日志中做到这一点。但我发现将它改为log4j是一个解决方案。 – Damian 2011-02-11 21:30:40

1

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

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

其中“富”是记录器名称。一般来说,这是包或包和类的名称。在以下示例中,封装com.stackoverflow.utils下一切被设置为信息而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

相关问题