如何将.NET TraceListener配置为记录到TEMP文件夹? 是否可以在app.config中执行此操作,如:
<add type="System.Diagnostics.TextWriterTraceListener"
initializeData="%Temp%\logfilename.log"/>
..没有进行任何代码更改?
或者只有在用代码创建监听器时才能这样做?
答案 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);