我在app.config中有以下监听器:
<system.diagnostics>
<trace autoflush="true" indentsize="4">
<listeners>
<add name="myListener"
type="System.Diagnostics.TextWriterTraceListener"
initializeData="myAppLog.log"/>
<remove name="Default"/>
</listeners>
</trace>
</system.diagnostics>
我的要求是,从后面的代码访问监听器对象并动态更改日志文件名(initializeData),这样我每天都可以有单独的日志文件。
我已经尝试了一些示例代码,如下所示,从后面的代码更改日志文件名,但它不起作用。
foreach (TraceListener listener in System.Diagnostics.Trace.Listeners)
{
listener.Attributes.Remove("initializeData");
listener.Attributes.Add("initializeData", "mylog.log");
}
有什么建议吗?
答案 0 :(得分:3)
所有已配置的跟踪侦听器都是在启动时创建的,您无法在运行时更改文件名。相反,您必须删除它们,在运行时创建和添加它们,如下所示。
//Remove all existing trace listeners
while (System.Diagnostics.Trace.Listeners.Count > 0)
System.Diagnostics.Trace.Listeners.RemoveAt(0);
//Add the new one with new file
System.Diagnostics.Trace.Listeners.Add(new TextWriterTraceListener(@"mylog.log"));
我希望这会有所帮助。