使用NLog的MappedDiagnosticsContext和ServiceStack

时间:2013-04-18 05:56:07

标签: servicestack nlog

我正在使用NLog和我的Servicestack服务。我想使用NLog的MappedDiagnosticsContext将变量附加到每个日志条目。在我的例子中,我想为每个请求生成一个唯一的标识符,并将该标识符记录在该请求期间记录的所有日志条目中。

ServiceStack.Logging.ILog接口(或任何其他服务堆日志记录类)似乎不支持这一点。

但我可以NLog.MappedDiagnosticsContext.Set("somekey", "some value")。这有效,但我与NLog联系起来(尽管我不担心)。

两个问题:

  1. 使用servicestack是否有更好的方法。
  2. 假设使用NLog的MappedDiagnosticsContext设置的值是安全的 范围内的请求?

2 个答案:

答案 0 :(得分:1)

自ServiceStack ver。起,您可以执行此操作。 5.0:

using (log.PushProperty("Hello", "World"))
{
    log.InfoFormat("Message");
}

另请参阅:https://docs.servicestack.net/logging

答案 1 :(得分:0)

我打算将MappedDiagnosticsContext用于以下目的:

我的事件日志目标的EventID:$ {mdc:item = eventId}。我们一直在考虑使用eventcontext属性,但这会改变您记录项目的方式。

SessionId用于记录ASP.Net代码时的其他目标:$ {mdc:item = sessionId},因为$ {aspnet-sessionid}方式对于非ASP代码似乎无法正常工作,即使使用NLog 2.0也是如此。来自NuGet的1.0。

我的测试显示这些案例对我的目的有意义。