2012-03-12 59 views
0

我正在使用大量工作線程處理內容的應用程序。這些線程中的每一個應該按照特定的命名約定寫入其自己的日誌文件,主要依賴於每個線程在創建時傳入的一個字符串值。Log4J自定義記錄器(按線程記錄)

我發現沒有辦法做到這一點與log4j不涉及在編譯時將所有可能的appender寫入log4j配置。這是我的應用程序難以接受的。該項目已經包含了許多對Logger對象的引用,我不想重寫它們。

到目前爲止,我已經開始編寫一個實現Logger的類,但是從MyLogger到Logger的轉換沒有通過。將Logger中的引用更改爲MyLogger並不完全是火箭科學,但我希望在實現中保持與log4j非常接近。

有沒有更容易的方法來做到這一點與log4j?如果沒有 - 是否有人有如何編寫自己的日誌實施的指導或教程?

+0

是[this](http://stackoverflow.com/questions/9630616)你以前的問題? – 2012-03-12 09:51:07

回答

0

您可以實現您自己的Appender,它會根據線程將日誌事件附加到不同的文件。該appender可以在Log4J配置中註冊,無需更改日誌代碼。 This教程看起來與您的問題類似。

1

如果您切換到您可以利用SiftingAppender。它正是你想要的:根據一些標準將日誌分成不同的appender,例如文件。默認情況下,它使用(可能是一個好主意),但是您可以輕鬆編寫自己的Discriminator

請注意,從Log4J切換到Logback不會產生問題:log4j-over-slf4j。基本上,您可以切換而無需更改一行代碼,仍然使用Log4J API。