2013-04-18 61 views
3

我在使用NLog和我的ServiceStack服務。我想使用NLog的MappedDiagnosticsContext將變量附加到每個日誌條目。在我的情況下,我想爲每個請求生成一個唯一標識符,並將該標識符記錄在該請求期間記錄的所有日誌條目中。使用NLog的MappedDiagnosticsContext和ServiceStack

ServiceStack.Logging.ILog接口(或任何其他的服務堆棧記錄類)似乎不支持這一點。但是我可以做NLog.MappedDiagnosticsContext.Set("somekey", "some value")。這有效,但把我和NLog聯繫起來(雖然我不擔心)。

兩個問題:

  1. 有沒有更好的方式與servicestack做到這一點。
  2. 假設使用NLog的MappedDiagnosticsContext設置的值是 的作用範圍是否安全?

回答

0

我打算使用MappedDiagnosticsContext爲這些目的:

事件ID爲我的事件日誌目標:$ {MDC:項目= EVENTID}。我們一直在考慮使用eventcontext屬性,但這改變了你必須記錄項目的方式。

SessionId是我登錄ASP.Net代碼時的其他目標:$ {mdc:item = sessionId}因爲$ {aspnet-sessionid}方式對於非ASP代碼即使使用NLog 2.0似乎也不能正常工作NuGet的.1.0。

我的測試表明這些情況對我的目的有意義。