0

デフォルトのNoOpトレースライターを置き換えることでトレースを有効にできます。

GlobalConfiguration.Configuration.Services.Replace(typeof(ITraceWriter), new SimpleTracer());

しかし、サーバーの実行中に無効にする(そして再度有効にする)にはどうすればよいですか?

列挙型「TraceLevel」にはオプションTraceLevel.Offがあります。trace-framworkフォームのWebAPIをTraceLevel.Offに設定する方法はありますか?

4

1 に答える 1

1

こちらの記事をご覧ください。

WebApi は、現在のカテゴリまたはレベルに関してトレース ライターを構成する方法を提供しません。

現在有効になっているカテゴリとレベルを判断するのは、ITraceWriter 実装の役割です。Web API フレームワークには、トレース構成の概念や、有効にするカテゴリとレベルの決定の概念がありません。

このアプローチの意図は、ITraceWriter 実装の独自のメカニズムに依存して、何をどこでトレースするかを構成することです。

たとえば、NLog 固有の ITraceWriter を使用する場合は、NLog 構成メカニズムを通じてトレースを構成する必要があります。

要するに、トレースを有効または無効にしたい場合、または特定のレベルのトレースをログに記録しないことを選択した場合は、SimpleTracer.

独自のスレッド セーフ シングルトン TraceConfiguration (GlobalConfiguration に類似) 実装を作成して、トレース構成を制御し、コード内でオンまたはオフに切り替えることができます。

public void Trace(HttpRequestMessage request, string category, TraceLevel level, Action<TraceRecord> traceAction)
{
     if(TraceConfiguration.Configuration.IsEnabled)
     {
        //trace
     }
}

または、要求オブジェクトのプロパティを設定してアクセスし、トレースを有効にするかどうかを決定することもできます。これは、アクションとコントローラーの ActionFilters によって設定することも、コントローラー内で設定することもできます。

public void Trace(HttpRequestMessage request, string category, TraceLevel level, Action<TraceRecord> traceAction)
{
     if(request.Properties["SupressTracing"] as string != "true")
     {
        //trace
     }
}

または、記事が示唆するように、NLog や Log4Net などを使用している場合は、config などを介して有効なレベルを設定する必要があります。

于 2012-12-12T10:59:23.180 に答える