0

我目前正在微调一个相对较大项目的 log4j 配置。目前我还没有为所有可以创建日志条目的位置配置日志级别。

我想让 log4j 有某种后备附加程序来记录所有未配置其他附加程序的消息。因此,例如,如果我有一条日志消息:

登录到:abcd:WARN

并配置一个 appender 以记录具有级别 INFO 的包 abc,然后将输出记录到该 appender。

但是,如果我没有配置附加程序来处理 abcd,那么应该使用回退。

如果我将我的 abc Appender 配置为 FATAL 级别,那么根本不应该记录任何内容,因为我故意配置 log4j 以保留这些消息。

我希望我能够解释我想做什么:-)

有什么建议么?

克里斯

4

2 回答 2

1

如果您不想在根记录器中获取所有内容,则可以设置

additivity = "false"

在其他记录器上。然后日志不会传播。

于 2012-07-19T11:01:52.453 回答
0

我认为@Keppil 似乎混淆了一些东西。

Additivity 是在 Logger 上设置的,它控制父 loggers(包括 appender)的设置如何传播到 logger。

因此,在 OP 的情况下,您可以执行以下操作:

Root Logger -> Appender1
Logger a.b.c -> additivity = false, Appender2

通过这样做,abc(及其所有子节点)会将其日志发送到 Appender2,而所有其他记录器将发送到 Appender1。

于 2012-07-19T11:10:31.567 回答