4

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

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

.. 不做任何代码更改?

或者只有在代码中创建侦听器才能做到这一点?

4

1 回答 1

0

你必须在你的代码中设置它。

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

 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); 
于 2015-10-16T12:11:59.843 回答