【发布时间】:2011-10-25 18:09:24
【问题描述】:
我的应用程序使用了多个附加程序——FileAppender、MemoryAppender 和 AdoNetAppender。我有一个重置日志的命令,以便按需创建一个新文件。这很好用——我只需调用log4net.LogManager.GetRepository().Shutdown()。
我还同时登录到MemoryAppender,并且我有一个计时器,可以将事件从附加程序中拉出并显示在日志窗口中。当我使用上述重置功能时,日志窗口停止显示消息,因为没有更多事件被记录。
对于FileAppender,在设置正确的文件名后,我可以通过调用ActivateOptions 让它重新开始记录。我在MemoryAppender 上调用了ActivateOptions,但这并没有让它再次开始记录。在调用ActivateOptions 之前,我已经查看了对象以确保它已经被配置。它实际上保留了我调用重置函数时的配置,所以看起来没问题。
我也在网上搜索过,有人说你只需调用log4net.Config.DOMConfigurator.Configure(已弃用——现在是log4net.Config.XmlConfigurator.Configure`),但也没有用。
在支持文件、内存和 Ado 附加程序的同时,我可以尝试关闭/重新启动日志记录的另一种方法吗?
【问题讨论】:
-
当您说“重置日志”时,您只是希望将文件清除为空吗?
-
我想要创建一个新文件...但我的 FileAppender 工作得很好。在我调用 Shutdown 并尝试使用 ActivateOptions 重新启动之后,MemoryAppender 似乎没有记录任何事件。
-
我还应该补充一点,AdoNetAppender 也可以工作。为了实现这一点,我调用 Shutdown,然后重命名 s3db 文件,然后使用原始文件名复制一个新的“起始”s3db 文件。有趣的是,对于 AdoNetAppender,我不会在任何地方调用 ActivateOptions —— 它只是以某种方式神奇地工作。
标签: c# logging .net-4.0 log4net appender