2013-04-18 57 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。

我的测试表明这些情况对我的目的有意义。