在调用Shutdown()后重新启动log4net内存附加程序

本文关键字:内存 log4net 程序 重新启动 调用 Shutdown | 更新日期: 2023-09-27 18:12:17

我的应用程序使用了几个追加器——FileAppenderMemoryAppenderAdoNetAppender。我有一个命令来重置日志,以便根据需要创建一个新文件。这非常有效——我只调用log4net.LogManager.GetRepository().Shutdown()

我还同时记录到MemoryAppender,并且我有一个计时器,将事件从appender中取出并显示在日志窗口中。当我使用前面提到的重置功能时,日志窗口停止显示消息,因为没有更多的事件被记录。

对于FileAppender,我能够通过在设置适当的文件名后调用ActivateOptions使其再次开始记录日志。我在MemoryAppender上调用了ActivateOptions,但这并没有让它再次开始记录日志。在调用ActivateOptions之前,我已经查看了对象,以确保它已经配置好了。它实际上保留了我调用重置函数时的配置,所以看起来不错。

我也在网上搜索过,人们说你只需要调用log4net.Config.DOMConfigurator.Configure(已弃用-现在它是log4net.Config.XmlConfigurator.Configure '),但这也不起作用。

是否有另一种方法,我可以尝试关闭/重新启动日志记录,同时支持文件,内存和Ado追加程序?

在调用Shutdown()后重新启动log4net内存附加程序

我认为你得到你想要的不调用Shutdown方法。只需在appender上设置一个新文件名并调用ActivateOptions。这将关闭旧的日志文件并打开新的日志文件。