【问题标题】:C# Access Listener TextWriterTraceListener object from Code behind and chage initializeData valueC# 从代码后面访问侦听器 TextWriterTraceListener 对象并更改 initializeData 值
【发布时间】:2012-04-23 10:17:54
【问题描述】:

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

有什么建议吗?

【问题讨论】:

    标签: logging trace system.diagnostics


    【解决方案1】:

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

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

    我希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2021-10-06
      • 1970-01-01
      • 2010-11-07
      • 2012-09-20
      • 1970-01-01
      • 2011-04-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多