我正在将NLog与Servicestack服务一起使用。我想使用NLog的MappedDiagnosticsContext将变量附加到每个日志条目。就我而言,我想为每个请求生成一个唯一的标识符,并将该标识符与该请求期间记录的所有日志条目一起记录下来。
ServiceStack.Logging.ILog
接口(或与此相关的任何其他服务栈日志记录类)似乎不支持此。
但是我可以NLog.MappedDiagnosticsContext.Set("somekey", "some value")
。这可行,但是将我与NLog绑定在一起(不过,我不必担心)。
两个问题:
我打算出于以下目的使用MappedDiagnosticsContext:
我的事件日志目标的事件ID:$ {mdc:item = eventId}。我们一直在考虑改用eventcontext属性,但这改变了您记录项目的方式。
关于ASP.Net代码登录时我的其他目标的会话ID:$ {mdc:item = sessionId},因为即使使用NLog 2.0.1.0,$ {aspnet-sessionid}方式对于非ASP代码也似乎无法正常工作。来自NuGet。
我的测试表明,这些情况对我而言很有意义。
您可以从ServiceStack ver。 5.0:
using (log.PushProperty("Hello", "World"))
{
log.InfoFormat("Message");
}