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 に答える