如何将.NET TraceListener配置为记录到TEMP文件夹

时间:2015-10-16 09:36:51

标签: .net special-folders tracelistener

如何将.NET TraceListener配置为记录到TEMP文件夹? 是否可以在app.config中执行此操作,如:

      <add type="System.Diagnostics.TextWriterTraceListener" 
          initializeData="%Temp%\logfilename.log"/>

..没有进行任何代码更改?

或者只有在用代码创建监听器时才能这样做?

1 个答案:

答案 0 :(得分:0)

您必须在代码中设置它。

正如您在source code中看到的那样,构造函数会立即分配给文件名,而不会解析文件名的内部结构。

 public TextWriterTraceListener(string fileName, string name) : base(name) {
            this.fileName = fileName; 
        } 

然后有一些代码来处理文件已经被锁定的可能性,但是没有什么可以处理文件夹不可写的可能性(TEMP通常是最后一个可写的文件夹)

    string fullPath = Path.GetFullPath(fileName);
                    string dirPath = Path.GetDirectoryName(fullPath); 
                    string fileNameOnly = Path.GetFileName(fullPath);
//more code
       fileNameOnly = Guid.NewGuid().ToString() + fileNameOnly;
                        fullPath = Path.Combine(dirPath, fileNameOnly);