为什么log4j在DEBUG中完全记录了所有内容?

时间:2014-01-23 03:37:27

标签: java logging log4j

所以我遇到一个问题,当我将根记录器切换到DEBUG时,log4j似乎想要记录所有可以“调试”的内容。

这是我的档案:

log4j.rootLogger=DEBUG, READER
log4j.appender.READER=org.apache.log4j.ConsoleAppender

log4j.appender.READER.layout=org.apache.log4j.PatternLayout

log4j.appender.READER.layout.ConversionPattern=[%-5p] %t->%c{1} - %m%n

com.myclass.readers=DEBUG, READER

现在我想要的是 我要在打印的读者类下定义的调试语句。我遇到的问题是,我在我的阅读器类中使用的Apache HTTP包看起来也开始转储其调试内容。

如何将此限制仅限于班级中的内容?我在网上看了看,我不确定我是否只是完全错过了一些东西,但我似乎无法解决这个问题。

谢谢!

3 个答案:

答案 0 :(得分:5)

您似乎已将rootLogger设置为DEBUG级别:

log4j.rootLogger=DEBUG

如果没有单独指定,所有记录器都将继承rootLogger的级别。

因此,将rootLogger的级别设置为ERROR或WARN,然后只有com.myclass.readers处于DEBUG级别。

log4j.rootLogger=ERROR, READER

答案 1 :(得分:2)

根记录器应设置为ERROR,仅将DEBUG设置为您感兴趣的类的记录器。

答案 2 :(得分:0)

默认情况下,root logger会将子记录器的所有日志打印到其日志记录级别。如果您不想打印子记录器的日志记录,请将该记录器的additivity属性设置为false。例子 -
<logger name="foo" additivity="false"> <appender_ref ref="A2" /> </logger>