从log4j appender中排除一个类

时间:2010-11-10 00:20:24

标签: java log4j

我有一个log4j.properties文件,如下所示:

log4j.logger.com.foo=INFO, foo-log
log4j.logger.com.foo.BarImpl=INFO, bar-log

通常对于匹配com.foo的包结构的类,我希望使用foo-log appender。但是,在该包中,我希望BarImpl日志使用bar-log appender而不是foo-log appender。目前,BarImpl编写的任何日志都由foo-log和bar-log处理(如预期的那样)。如何让foo-log appender忽略BarImpl类?

1 个答案:

答案 0 :(得分:14)

来自Log4j文档:

  

给定记录器的每个已启用的日志记录请求都将转发到该记录器中的所有appender以及层次结构中较高的appender。换句话说,appender是从记录器层次结构中附加地继承的。例如,如果将控制台appender添加到根记录器,则所有启用的记录请求将至少在控制台上打印。如果另外将文件追加器添加到记录器(例如C),则对C和C的子节点启用的日志记录请求将在文件和控制台上打印。可以通过将additivity标志设置为false来覆盖此默认行为,以便不再添加appender累积。

尝试使用以下一行(或类似):

  

log4j.additivity.com.foo.BarImpl =假