我在我的应用程序中使用
TextWriterTraceListener
,如果文件不可用于写入跟踪,它将创建另一个带有 GUID 前缀的跟踪文件。
我感兴趣的是获取跟踪文件名。在正常情况下,我知道文件名是什么,但是当
TextWriterTraceListener
以 GUID 为前缀时,我如何预测/获取跟踪文件名?
TextWriterTraceListener
具有 Name
属性,这不是您要找的吗?
编辑
我尝试访问您需要的信息但没有成功,主要是因为包含 app.config 信息的
SystemDiagnosticsSection
类无法访问。我认为你唯一的机会是解析 app.config 的 XML 或使用反射来访问对象的某些内部字段(我不推荐)。
我认为 TextWriterTraceListener 有一个名为 fileName 的私有方法。我使用调试器的立即窗口来测试以下内容:
l.Name;
"textFileListener"
l.fileName;
"C:\\Tools\\Support\\PatchInstaller\\bin\\Debug\\trace.txt"
我找不到访问该私有方法 fileName 的方法。我尝试从 TextWriterTraceListener 继承,但看不到该方法。到目前为止唯一的方法是使用调试器。
这对我有用:
foreach (TraceListener tl in System.Diagnostics.Trace.Listeners)
{
Response.Write("Trace listener name = '" + tl.Name + "', type = " + tl.GetType().ToString() + "<br>\n");
}