2012-07-19 144 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