3

我在 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");
}

有什么建议么?

4

1 回答 1

4

所有配置的跟踪侦听器都是在启动时创建的,您不能在运行时更改文件名。相反,您必须删除它们,在运行时创建和添加它们,如下所示。

//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"));

我希望这有帮助。

于 2012-05-15T23:28:47.617 回答