2010-09-16 58 views
1

我想在域關閉時記錄一些摘要行,但是log4net先掛接AppDomain.CurrentDomain.ProcessExit並在我有機會輸出我之前關閉日誌記錄信息。 (並從未記錄消息)log4net - 如何在日誌記錄系統關機之前記錄摘要

所以我的問題是: 1.有沒有辦法在log4net之前掛鉤ProcessExit而不用過多地使用初始化順序? (當然,不改變我的應用程序的程序類) 2. log4net是否提供它在關閉之前調用的任何鉤子?

回答

1

記錄器存儲庫(可通過log4net.LogManager.GetAllRepositories()訪問)有一個事件:ShutdownEvent。這對你沒有用,因爲這個事件是之後 log4net關閉了一切。

掛接到AppDomain.CurrentDomain.ProcessExit對我來說工作得很好。在我初始化log4net之前,我只需要這樣做。 (不知道這是否符合「初始化順序不是太多」)。

+0

是的,順序當然是問題。不僅主要組件將log4net初始化爲顯然的第一件事情之一,但是許多依賴關係也是如此。在log4net本身之前初始化記錄到log4net的東西看起來不合邏輯,而這一切都是因爲無法控制事件委託的順序。呃,好吧... – EFraim 2010-09-18 12:52:10