2012-08-28 68 views
0

我不知道是否可以使用log4net執行以下操作。Log4net外部配置(C#)

我有一個服務,它在啓動時從數據庫讀取其所有配置。在配置中有日誌配置,如「日誌級別」和「日誌文件位置」。

要求是寫入所有日誌,包括從服務啓動日誌到從數據庫讀取的日誌文件位置(當然如果連接到數據庫時有任何問題)。

一位同事寫了一個非常簡單的日誌類來滿足這個要求,但我真的想使用log4net來使用log4net已經提供的幾個功能。

你有什麼想法如何做到這一點?

回答

0

最簡單的方法是在啓動時從數據庫讀取現有配置,然後生成一個與log4net格式匹配的外部配置文件。

然後,你可以問log4net的直接讀取這個文件,本文中的「讀文件直接」節之後,

http://logging.apache.org/log4net/release/manual/configuration.html

+0

這解決了問題的一半,但真正的「問題」是,來自服務啓動的日誌不會寫入數據庫中配置的日誌路徑。 PS。我不直接從數據庫中讀取配置,該服務被集成到一個框架中,該框架通過一個內部與配置服務器建立TCP連接的API連接,以獲得服務配置。我有興趣將此連接記錄到已配置的日誌路徑中 –

+0

可以在啓動時提供一組默認的log4net設置,以便在加載新設置之前,所有日誌條目都轉到默認日誌文件?如果您想排查連接故障,那麼這是一種解決方法,可爲您提供足夠的信息。或者,如果您確實想將所有日誌條目寫入「logpath」,則在加載新設置之前,您必須緩存日誌條目。我從來沒有這樣做,我不確定log4net是否已經有一些支持緩存。 –

+0

準確地說,對緩存的支持是我正在尋找的。我不知道,也許使用自定義appender或修改log4net中的某些屬性。我提出了同樣的解決方法,但是顯然這是不可接受的,這就是爲什麼我們使用一個同事非常簡單的記錄器實現。 –