2012-04-11 13 views
2

をチャゲ私はApp.configファイルで、次のリスナーを持っている:の背後にあるコードからC#のアクセスリスナーは、TextWriterTraceListenerオブジェクトとinitializeData値

<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> 

私の要件は、背後にあるコードからリスナーオブジェクトにアクセスし、ログファイル名を変更し、ということです(私は毎日別々のログファイルを持つことができるように、動的に初期化します。

ログファイル名をコードの背後から変更するために、以下のようなサンプルコードを試しましたが、動作しません。

foreach (TraceListener listener in System.Diagnostics.Trace.Listeners) 
{ 
    listener.Attributes.Remove("initializeData");  
    listener.Attributes.Add("initializeData", "mylog.log"); 
} 

お勧めはありますか?

答えて

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

これが役立ちます。

関連する問題