将NLog的MappedDiagnosticsContext与ServiceStack一起使用

问题描述 投票:3回答:2

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

ServiceStack.Logging.ILog接口(或与此相关的任何其他服务栈日志记录类)似乎不支持此。

但是我可以NLog.MappedDiagnosticsContext.Set("somekey", "some value")。这可行,但是将我与NLog绑定在一起(不过,我不必担心)。

两个问题:

  1. 是否有更好的方法通过servicestack做到这一点。
  2. 可以安全地假设使用NLog的MappedDiagnosticsContext设置的值是适用于请求?
servicestack nlog
2个回答
0
投票

我打算出于以下目的使用MappedDiagnosticsContext:

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

关于ASP.Net代码登录时我的其他目标的会话ID:$ {mdc:item = sessionId},因为即使使用NLog 2.0.1.0,$ {aspnet-sessionid}方式对于非ASP代码也似乎无法正常工作。来自NuGet。

我的测试表明,这些情况对我而言很有意义。


0
投票

您可以从ServiceStack ver。 5.0:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.