11

トレースがどのように機能するかを理解しようとしています

簡単な新しい Web プロジェクトを作成しました。これは私が使用できる私のコードです

// Create a trace listener for the event log.
EventLogTraceListener myTraceListener = new EventLogTraceListener("myEventLogSource");

// Add the event log trace listener to the collection.
Trace.Listeners.Add(myTraceListener);

// Write output to the event log.
Trace.WriteLine("Test output");

私はこのmsdnリンクから助けを得ています

私のweb.configの設定は次のとおりです

 <system.diagnostics>
 <trace autoflush="false" indentsize="4">
  <listeners>
    <add name="myListener"
      type="System.Diagnostics.EventLogTraceListener"
      initializeData="TraceListenerLog" />
  </listeners>
 </trace>
</system.diagnostics>

ただし、このコードを実行すると、このログがどこで発生しているのかわかりません。EVENT VIEWER を確認すると、「Application and Services Log」の下に「myEventLogSource」という名前の新しいログが作成されると予想していましたが、発生していません。

これがどのように機能するかを誰かに説明してください。

4

1 に答える 1

7

アプリケーション ログの下で、アプリケーション ログに書き込みを行っていたソースが 2 つあるかどうかを確認します。1 つは TraceListenerLog で、もう 1 つは myEventLogSource です。新しいログは作成されません。両方ともアプリケーション ログを使用します。新しいログを作成し、それにトレース出力を書き込みたい場合は、次のように実行できます (もちろん、ログ名はソース名と同じである必要はありません)。

        string logSource = "_myEventLogSource";
        if (!EventLog.SourceExists(logSource))
            EventLog.CreateEventSource(logSource, logSource);

        EventLogTraceListener myTraceListener = new EventLogTraceListener(logSource);

        // Add the event log trace listener to the collection.
        System.Diagnostics.Trace.Listeners.Add(myTraceListener);

        // Write output to the event log.
        System.Diagnostics.Trace.WriteLine("Test output");

ソースが存在しない場合でも、EventLogTraceListener コンストラクターに渡したソース名を使用して、トレース情報がアプリケーション ログの下のイベント ログに書き込まれます。

于 2012-06-27T07:40:20.690 に答える