【问题标题】:Using NLog's MappedDiagnosticsContext with ServiceStack使用 NLog 的 MappedDiagnosticsContext 和 ServiceStack
【发布时间】:2013-04-18 05:56:06
【问题描述】:

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

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

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

两个问题:

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

【问题讨论】:

    标签: servicestack nlog


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

        猜你喜欢
        • 2014-04-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-02
        相关资源
        最近更新 更多