我的應用程序使用幾個appender -a FileAppender
,MemoryAppender
和AdoNetAppender
。我有一個命令重置日誌,以便按需創建新文件。這很好 - 我只需撥打log4net.LogManager.GetRepository().Shutdown()
即可。在調用Shutdown()後重新啓動log4net內存appender()
我也同時登錄到MemoryAppender
,我有一個計時器將事件從appender中取出並顯示在日誌窗口中。當我使用上述重置功能時,日誌窗口會停止顯示消息,因爲沒有更多事件正在記錄。
對於FileAppender
,我可以通過在設置合適的文件名後調用ActivateOptions
來重新開始記錄。我在MemoryAppender
上調用了ActivateOptions
,但這並沒有讓它再次開始記錄。在致電ActivateOptions
之前,我已經查看了該對象以確保它已被配置。它實際上保留了我稱之爲重置功能的配置,所以看起來沒問題。
我也在網上搜索過,有人說你只需要撥打log4net.Config.DOMConfigurator.Configure
(已棄用 - 現在是log4net.Config.XmlConfigurator.Configure`),但那也行不通。
是否有另一種方法可以嘗試關閉/重新啓動日誌記錄,同時支持File,Memory和Ado appenders?
當你說「重置日誌」,你只是想文件被清除爲空? –
我想要創建一個新文件...但我的FileAppender工作得很好。 MemoryAppender在調用Shutdown後似乎沒有記錄任何事件,並嘗試使用ActivateOptions重新啓動。 – Dave
我還應該補充一點,AdoNetAppender也適用。爲了實現這個功能,我調用Shutdown,然後重命名s3db文件,然後用原始文件名複製一個新的「開始」s3db文件。有趣的是,對於AdoNetAppender,我不會在任何地方調用ActivateOptions - 它只是奇蹟般地工作。 – Dave