【问题标题】:Remove ThreadContext Properties删除 ThreadContext 属性
【发布时间】:2011-09-30 17:00:20
【问题描述】:

我已经设置了 ThreadContext.Properties 并且需要在我的代码生命周期中更新它的值。过去我使用过 log4j MDC 并且必须: MDC.remove(跟踪);

然后通过以下方式添加另一个值: MDC.put(TRACKING, trackingIdStr);

现在我正在使用 Log4Net,我们的应用程序使用属性: log4net.ThreadContext.Properties["TrackingId"] = 跟踪器;

问题:如何删除以前的值并添加新值?是不是就这么简单: log4net.ThreadContext.Properties["TrackingId"] = tracker2;

【问题讨论】:

    标签: .net asp.net-mvc-3 logging log4net


    【解决方案1】:

    是的,就是这么简单。您可以按照问题中显示的方式重新分配,也可以在完成后完全删除该值。

    //set
    ThreadContext.Properties["TrackingId"] = tracker1;
    
    //reset
    ThreadContext.Properties["TrackingId"] = tracker2;
    
    //completely remove
    ThreadContext.Properties.Remove("TrackingId");
    

    如果您希望上下文属性对特定代码部分有效(通过使用),那么您可以尝试 ThreadContext.Stacks:

    using(ThreadContext.Stacks["TrackingId"].Push("hello"))
    {
      //messages logged here will be tagged with TrackingId="hello"
    }
    //messages logged here will not be tagged with TrackingId="hello"
    

    【讨论】:

      【解决方案2】:

      也许这不能直接回答您的问题,但在您的情况下,您可能会考虑使用计算出的上下文值。在这里很好地解释了这一点:

      Log4Net Tutorial pt 6: Log Event Context

      (向下滚动一点)

      【讨论】:

        猜你喜欢
        • 2010-12-19
        • 2010-12-10
        • 2013-06-27
        • 1970-01-01
        • 2011-01-29
        • 2018-07-11
        • 1970-01-01
        • 2017-01-21
        相关资源
        最近更新 更多