web-dev-qa-db-ja.com

トレースログの場所、それらを表示する場所

MVCまたはWCFアプリの開発中にTrace.Write("");ログをどこに表示しますか?どこを見ればいいですか?

18
DarthVader

System.Diagnostics.Traceクラスを使用する場合、Writeメソッドはそのトレース出力を " Listenersコレクションのトレースリスナーに書き込みます。 " Trace.Listenersデフォルトでは、プロパティには DefaultTraceListener のインスタンスのみが含まれ、デバッガーの出力ウィンドウにメッセージを出力します。これらのトレースメッセージを表示するには、もちろんデバッグを有効にする必要があります。

そのため、Visual StudioでWCFサービスまたはASP.NETアプリをデバッグすると、VS出力ペインにトレース出力が表示されます。たとえば、次のコード:

System.Diagnostics.Trace.WriteLine("GetData method was called.");

...この出力が表示される原因:

debug output

デバッガーを実行してトレース出力を表示したくない場合は、DefaultTraceListenerを削除して別のものに置き換えることができます。たとえば、( TextWriterTraceListener トレースをファイルに出力します。これを行うには、次の内容のweb.configファイルを作成します(または、既存のweb.configにsystem.diagnosticsセクションを追加するだけです)。

<configuration>
    <system.diagnostics>
      <trace autoflush="true" indentsize="4">
        <listeners>
          <remove name="Default" />
          <add name="myListener" type="System.Diagnostics.TextWriterTraceListener"
               initializeData="c:\myListener.log" />
        </listeners>
      </trace>
    </system.diagnostics>
</configuration>

その後(出力場所への書き込みアクセス権を持つモードで実行していると想定)、トレースは指定したファイルに出力されます。

トレースをファイルではなくイベントログに書き込む場合は、 EventLogTraceListener を使用して行うこともできます。

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

イベントログへの書き込みアクセス権を持つアカウントコンテキストでアプリが実行されていることを確認してください。

トレースで実行できることは他にもたくさんあります(ASP.NETページ自体に出力するなど)。他の例のウォークスルー はこちら

23
schellack