我正在使用NLog和我的Servicestack服务。我想使用NLog的MappedDiagnosticsContext将变量附加到每个日志条目。在我的例子中,我想为每个请求生成一个唯一的标识符,并将该标识符记录在该请求期间记录的所有日志条目中。
ServiceStack.Logging.ILog
接口(或任何其他服务堆日志记录类)似乎不支持这一点。
但我可以NLog.MappedDiagnosticsContext.Set("somekey", "some value")
。这有效,但我与NLog联系起来(尽管我不担心)。
两个问题:
答案 0 :(得分:1)
自ServiceStack ver。起,您可以执行此操作。 5.0:
using (log.PushProperty("Hello", "World"))
{
log.InfoFormat("Message");
}
答案 1 :(得分:0)
我打算将MappedDiagnosticsContext用于以下目的:
我的事件日志目标的EventID:$ {mdc:item = eventId}。我们一直在考虑使用eventcontext属性,但这会改变您记录项目的方式。
SessionId用于记录ASP.Net代码时的其他目标:$ {mdc:item = sessionId},因为$ {aspnet-sessionid}方式对于非ASP代码似乎无法正常工作,即使使用NLog 2.0也是如此。来自NuGet的1.0。
我的测试显示这些案例对我的目的有意义。