我有一个log4j.properties文件,看起来像这样:

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

通常,对于与com.foo包结构匹配的类,我希望使用foo-log附加程序。但是,在该软件包中,我希望BarImpl日志使用bar-log附加程序,而不要使用foo-log附加程序。目前,由BarImpl编写的任何日志均由foo-log和bar-log(按预期)处理。如何获取foo-log附加程序来忽略BarImpl类?

最佳答案

从Log4j文档中:

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

尝试尝试以下代码行(或类似代码):

log4j.additivity.com.foo.BarImpl = false

08-26 17:05
查看更多