2012-07-19 113 views
0

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

我想让log4j有某种后备appender来记录没有配置其他appender的所有消息。因此,如果例如我有一个日志消息:

日志:A.B.C.D:WARN

,并具有构造成记录与水平INFO包A.B.C一个appender,则输出将被记录到该附加器。

但是,如果我没有配置处理a.b.c.d的appender,那么应该使用回退。

如果我将a.b.c Appender配置为级别为FATAL,那么根本不应该记录任何内容,因为我故意配置log4j以使这些消息不起作用。

我希望我能够解释一下我想要做的:-)

有什么建议?

克里斯

+0

这不是默认行为吗? – Keppil 2012-07-19 10:21:40

+0

嗯...在我的情况下,我有rootlogger记录其他人正在记录的一个大日志文件:-(也许我配置rootLogger错误 – 2012-07-19 10:44:44

+1

如果你不想让一切都在根记录器,你可以在其他appenders上设置'additivity = false'标志,那么日志就不会传播,这是你的意思吗? – Keppil 2012-07-19 10:47:37

回答

1

如果你不想让你根记录的一切,你可以设置

additivity = "false" 
在其他记录器

。然后日志不会传播。

+0

是不是相反?在记录仪上设置“叠加度”,然后appender设置不会传播 – 2012-07-19 11:07:19

+0

您可能是对的。我猜,最好使用'categories',因为这是log4j.xml文件中使用的术语。 – Keppil 2012-07-19 11:10:18

+0

类别是旧的过时术语。现在被称为“记录器”。 Appender是另一回事,我想你已经混合了类别/记录器与Appender – 2012-07-19 11:11:17

0

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

添加性是在记录器上设置的东西,它控制父记录器(包括appender)的设置如何传播到记录器。

所以,在OP的情况下,你可以做这样的事情:

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

通过这样做,美国广播公司(及其所有子)将其日志发送到Appender2,而其他所有记录器将发送给Appender1 。

+0

嗯,严格来说,加法是设置记录器,但会影响记录传播到的_appenders_。 – Keppil 2012-07-19 11:53:29

+0

是不是我一直在说的? :) – 2012-07-24 06:15:56

+0

不,你写道它在你的答案中传播给记录器。 – Keppil 2012-07-24 06:19:04