2017-02-17 24 views
0

在RESTful設置中,客戶端發送操作ID(通常是GUID)以便可以跟蹤請求日誌的情況並不少見。通過Web API中的請求維護操作ID

我的問題是,在Web API中,是否有一種本地.NET Web API的方式來跟蹤每個請求的ID?

log4net有LogicalContext可以跟蹤它。 LogicalContext的問題在於它特定於log4net,不能與NLog一起使用。 LogicalContext無法獲取所有密鑰的列表。我必須事先知道密鑰,如果一個API將其稱爲「操作ID」而另一個API將其稱爲「活動ID」,則會出現問題。

回答

1

也許使用Guid'Trace.CorrelationManager.ActivityId'作爲CorrelationId?

它可以使用Application_BeginRequest方法在應用程序類(從System.Web.HttpApplication繼承)中針對每個請求進行配置。

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

+0

謝謝。但是有一個問題:Trace.CorrelationManager.ActivityId似乎不一致。如果在請求中我將ActivityId設置爲某個值,並且在請求期間實例化多個線程,那麼這些線程中ActivityId的值突然不相等,而log4net中的LogicalThreadContext在多個線程中是一致的。 – Husain

+1

@Husain NLog在異步邏輯上下文在線程間移動時映射了DiagonalLogicalContext(MDLC)。 https://github.com/NLog/NLog/wiki/MDLC-Layout-Renderer –