如何将 .NET TraceListener 配置为登录到 TEMP 文件夹?是否可以在 app.config 中执行此操作,例如:
<add type="System.Diagnostics.TextWriterTraceListener"
initializeData="%Temp%\logfilename.log"/>
.. 不做任何代码更改?
或者只有在代码中创建侦听器才能做到这一点?
如何将 .NET TraceListener 配置为登录到 TEMP 文件夹?是否可以在 app.config 中执行此操作,例如:
<add type="System.Diagnostics.TextWriterTraceListener"
initializeData="%Temp%\logfilename.log"/>
.. 不做任何代码更改?
或者只有在代码中创建侦听器才能做到这一点?
你必须在你的代码中设置它。
正如您在源代码中看到的那样,构造函数立即分配给文件名,而不解析文件名的内部结构。
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);