C# 调用Shutdown()后重新启动log4net内存追加器

C# 调用Shutdown()后重新启动log4net内存追加器,c#,logging,.net-4.0,log4net,appender,C#,Logging,.net 4.0,Log4net,Appender,我的应用程序使用了几个appender--文件appender,内存appender,以及adoneappender。我有一个命令来重置日志,以便根据需要创建一个新文件。这非常有效——我只需调用log4net.LogManager.GetRepository().Shutdown() 我还可以同时登录到内存appender,我有一个计时器,可以从appender中提取事件并在日志窗口中显示它们。当我使用上述重置功能时,日志窗口将停止显示消息,因为不再记录任何事件 对于FileAppender,在

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

我还可以同时登录到
内存appender
,我有一个计时器,可以从appender中提取事件并在日志窗口中显示它们。当我使用上述重置功能时,日志窗口将停止显示消息,因为不再记录任何事件

对于
FileAppender
,在设置正确的文件名后,我可以通过调用
ActivateOptions
让它再次开始记录。我已经在出现的
内存中调用了
ActivateOptions
,但它无法再次开始记录。在调用
ActivateOptions
之前,我已经查看了对象,以确保它已经配置好。它实际上保留了我调用reset函数时的配置,所以看起来还可以

我也在网上搜索过,有人说你只需要调用
log4net.Config.DOMConfigurator.Configure
(不推荐使用——现在是log4net.Config.XmlConfigurator.Configure`),但这也没用


在支持文件、内存和Ado appenders的同时,是否还有另一种方法可以尝试关闭/重新启动日志记录?

我认为不调用
shutdown
方法可以得到想要的结果。只需在appender上设置一个新文件名,然后调用
ActivateOptions
。这将关闭旧的日志文件并打开新的…

当你说“重置日志”时,你只是想将文件清除为空吗?我想创建一个新文件。。。但是我的FileAppender工作得很好。在我调用Shutdown并尝试使用ActivateOptions重新启动后,MemoryAppender似乎没有记录任何事件。我还应该补充一点,AdoneAppender也可以工作。为了实现这一点,我调用Shutdown,然后重命名s3db文件,然后用原始文件名复制一个新的“起始”s3db文件。有趣的是,对于AdoNetAppender,我没有在任何地方调用ActivateOptions——它只是以某种方式神奇地工作。我一直在这里更改我的评论…:)好的,我试试这个建议。希望它也能为AdoNetAppender工作。谢谢!这完全奏效了。重置日志时,我不再调用Shutdown,MemoryAppender也可以工作。我只是更改文件名并调用FileAppender的ActivateOptions。对于AdoNetAppenders,我对它们调用Close(),移动旧的s3db文件,然后调用ActivateOptions并生成一个新的日志数据库。完美的