2017-02-17 10 views
0

クライアントが操作ID(通常はGUID)を送信して、要求ログをトレースできるようにするRESTful設定では珍しいことではありません。Web APIの要求による操作IDの維持

私の質問は、Web APIでは、リクエストごとのIDを追跡するために.NET Web APIにネイティブな方法がありますか?

log4netにはそれを追跡できるLogicalContextがあります。 LogicalContextの問題点は、log4netに固有であり、NLogでは使用できないことです。 LogicalContextにすべてのキーのリストを取得する方法はありません。私は手前のキーを知っていなければなりません。あるAPIがそれを「操作ID」と呼び、もう1つのAPIがそれを「アクティビティID」と呼んでいる場合に問題になります。

答えて

1

CorrelationIdにGuid 'Trace.CorrelationManager.ActivityId'を使用することはできますか?

Application_BeginRequestメソッドを使用して、アプリケーションクラス(System.Web.HttpApplicationから継承)で要求ごとに構成できます。

https://github.com/NLog/NLog/wiki/Trace-Activity-Id-Layout-Renderer

+0

ありがとうございます。しかし、問題があります:Trace.CorrelationManager.ActivityIdは一貫していないようです。要求でActivityIdを特定の値に設定し、要求中に複数のスレッドをインスタンス化すると、log4netのLogicalThreadContextが複数のスレッドにわたって一貫しているのに対し、これらのスレッドのActivityIdの値はすべて同じではありません。 – Husain

+1

@Husain NLogは非同期論理コンテキストがスレッド間を移動するときにMappedDiagnosticsLogicalContext(MDLC)を持ちます。 https://github.com/NLog/NLog/wiki/MDLC-Layout-Renderer –

関連する問題