3

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

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

但是我可以做到NLog.MappedDiagnosticsContext.Set("somekey", "some value")。这可行,但将我与 NLog 联系在一起(不过我并不担心)。

两个问题:

  1. 有没有更好的方法来使用 servicestack 来做到这一点。
  2. 假设使用 NLog 的 MappedDiagnosticsContext 设置的值的范围限定为请求是否安全?
4

2 回答 2

1

您可以从 ServiceStack 版本开始执行此操作。5.0:

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

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

于 2019-11-05T19:17:57.953 回答
0

我打算将 MappedDiagnosticsContext 用于这些目的:

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

记录 ASP.Net 代码时我的其他目标的 SessionId:${mdc:item=sessionId} 因为即使使用来自 NuGet 的 NLog 2.0.1.0,${aspnet-sessionid} 方式似乎也不适用于非 ASP 代码.

我的测试表明,这些案例对我的目的是有意义的。

于 2013-10-07T16:23:41.277 回答