2010-09-16 59 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