2

私は次のことに興味があります:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.diagnostics>
    <trace autoflush="false" indentsize="4">
      <listeners>
        <add name="logger" type="System.Diagnostics.TextWriterTraceListener"
             initializeData="LoggingFile.txt" />
        <remove name="Default" />
      </listeners>
    </trace>
  </system.diagnostics>
</configuration>

エラーメッセージとスタックトレースをログに記録するオプションをソリューションに含めたいと思います。ただし、これをオンまたはオフにできる必要があります。これは、すべてをコメントアウトすることで可能System.Diagnosticsですか?それとももっと良い方法はありますか?

ロガーが実行時に書き込むファイルを指定することは可能ですか?

4

1 に答える 1

4

さまざまなレベルのメッセージを追跡できるSourceSwitchを利用できます。まず、いくつかの設定を追加することから始めますapp.config

<system.diagnostics>
  <sources>
    <source name="TraceTest" switchName="SourceSwitch"
            switchType="System.Diagnostics.SourceSwitch">
      <listeners>
            <!-- choose one or use multiple TraceListeners -->
            <add name="console" type="System.Diagnostics.ConsoleTraceListener"
                 initializeData="false"/>
            <add name="file" type="System.Diagnostics.TextWriterTraceListener"
                 initializeData="error.log"/>
            <remove name ="Default"/>
      </listeners>
    </source>
   </sources>
   <switches>
    <!--  MSDN: 4 verbose Information, Information 3, Warning 2, Error 1, -->
    <add name="SourceSwitch" value="Error"/>
  </switches>
  <trace autoflush="true" indentsize="4"/>
</system.diagnostics>

アプリケーション内では、app.config 内の定義された名前を参照するTraceSourceオブジェクトを使用して、メッセージを追跡できます。

TraceSource ts = new TraceSource("TraceTest");
ts.TraceEvent(TraceEventType.Information, 123, "event info");
ts.TraceEvent(TraceEventType.Error, 123, "event error");
ts.TraceEvent(TraceEventType.Warning, 123, "event warning");

ts.TraceInformation("any text");
ts.Flush();
ts.Close();

一般的な情報については、MSDNのHow to: Use TraceSource ...を参照してください。Dr. Google を使用して、この問題に関する非常に優れたブログ投稿を参照するSO で関連する質問を見つけました。

1つ指摘したいのは...

リスナーがトレース メッセージを書き込むレベルを変更するには

構成ファイルは、アプリケーションの初期化時にトレース ソースの設定を初期化します。これらの設定を変更するには、構成ファイルを変更してアプリケーションを再起動するか、TraceRefresh メソッドを使用してプログラムでアプリケーションを更新する必要があります。アプリケーションは、構成ファイルによって設定されたプロパティを動的に変更して、ユーザーが指定した設定をオーバーライドできます。たとえば、現在の構成設定に関係なく、重要なメッセージが常にテキスト ファイルに送信されるようにする必要がある場合があります。

于 2012-09-13T18:31:48.253 に答える