6

コードの特定のフレームワークがあり、次の 2 つの理由で TraceListener が定義されています。

  • 更新するまで Trace.Write を介して行われていた多くの古いログとの後方互換性、および
  • 必要に応じて、コードが参照する他のアセンブリをインストルメント化できると便利です。

ただし、デバッグに役立たない多くの無意味なデータをログに記録するアセンブリ (私たちのものではない) が 1 つあります。この 1 つのアセンブリ (または、代わりに、そのアセンブリを中心に構築したファサード プロジェクト) のトレースをオフにし、残りのアプリケーションのトレースをオフにするにはどうすればよいでしょうか?

ファサード プロジェクトでさまざまな種類の構成を試しましたが、通常は次のように見えますが、役に立ちませんでした。最初にロギングを設定する要素<remove>に一致する要素を追加してみました。それらを試し、設定し、少なくとも 3 回試みました。ご協力いただきありがとうございます。<add><clear><trace enabled="false">

<system.diagnostics>
    <trace autoflush="true" indentsize="4">
      <listeners>
        <clear/>
      </listeners>
    </trace>
    <switches>
    </switches>
  </system.diagnostics>
4

2 に答える 2

3

TraceListener で使用するために、独自の trace filterを作成できます。このフィルター内で、stackTrace でアセンブリを検索し、イベント トレースをオフにすることができます。

私の場合、DotNetOpenAuth ライブラリからのイベントのみをフィルター処理する EventTypeFilter に基づいてフィルター ( DotNetOpenAuthFilterを参照) を作成しました。

次に、フィルターを web.config のリスナーに接続します。

<configuration>
  <system.diagnostics>
    <trace>
      <listeners>
        <add name="console" type="System.Diagnostics.ConsoleTraceListener" >
          <filter type="Common.Log.DotNetOpenAuthFilter, Common" initializeData="Warning" />
        </add>
      </listeners>
    </trace>
  </system.diagnostics>
</configuration>
于 2012-10-04T11:55:57.370 に答える
0

TraceSource を使用します。

  1. トレース ソースで初期化します。

    TraceSource logger = new TraceSource("Class1");

  2. コードの重要なポイントから呼び出します。

    logger.TraceInformation("Hello from Class1");

  3. アプリケーション構成を必ず編集してください。

<system.diagnostics> <trace autoflush="true"/> <sources> <source name="Class1" switchName="Class1Switch" switchType="System.Diagnostics.SourceSwitch"> <listeners> <add name="console"></add> <add name="csv" /> <!-- or you can add your own listener here --> </listeners> </source> </sources> <switches>
<add name="Class1Switch" value="Information" />
</switches> <sharedListeners> <add name="console" type="System.Diagnostics.ConsoleTraceListener" /> <add name="csv" type="System.Diagnostics.DelimitedListTraceListener" delimiter="|" initializeData="d:\data\tracing\trace.log" traceOutputOptions="Timestamp, ThreadId, LogicalOperationStack, DateTime, ProcessId"> </add> </sharedListeners> </system.diagnostics>

たとえば、エラーのみをログに記録したい場合は、スイッチを変更します。

<add name="Class1Switch" value="Error" />

完全にオフにするには:

<add name="Class1Switch" value="Off" />
于 2016-02-11T09:06:44.147 に答える