关闭/重新打开使用XML配置创建的TraceListener,指向外部USB记忆棒

时间:2014-03-21 17:34:10

标签: c# .net logging trace tracelistener

我有一个TraceListener对象,用于记录,在app.config中创建,指向USB记忆棒上的某个位置。

我收到IOException消息

  

文件的卷已经外部更改,因此打开的文件不再有效。

在我移除设备之后尝试Trace.WriteLine()然后将其重新插入。我知道它正在发生,因为当我拔掉它时,跟踪侦听器所具有的打开文件的句柄无效。

我设法通过在TraceListener上调用IOException来阻止Close(),但我无法弄清楚如何再次重新打开该文件的句柄。 TextWriterTraceListener.Close()方法的MSDN文档说

  

自动调用Close后调用Write或WriteLine方法   重新打开流。

但它只是没有这样做。关闭流后,我没有得到进一步的输出。

编辑:

更多信息

我发现跟踪侦听器只能在我调用Close()后尝试在驱动器拔出时尝试写入时再无法再写入。如果我在拔出驱动器时不写,那么再次插入驱动器并尝试写入,一切正常。我还验证了我的Trace.Listeners集合仍然包含我的听众。

1 个答案:

答案 0 :(得分:0)

我在一系列研究中发现Trace.Refresh()似乎解决了这个问题,但是,从阅读rene的原始问题的评论来看,这个方法将重新初始化整个Trace框架。对我想要的东西来说似乎有点沉重,但也许这个答案会帮助别人。

Trace.Refresh() on MSDN

来自MSDN的评论:

  

启动应用程序时捕获跟踪配置数据。   如果在应用程序启动后更改配置数据,   调用Refresh方法来更新跟踪配置数据。