我已经设置了ThreadContext.Properties,并且需要在代码的生命周期内更新其值。过去,我使用过log4j MDC,并且不得不:
MDC.remove(TRACKING);

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

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

问题:如何删除先前的值并添加新的值?是否像这样简单:
log4net.ThreadContext.Properties [“TrackingId”] = tracker2;

最佳答案

是的,就是这么简单。您可以按照问题中的显示进行重新分配,也可以在完成后将其完全删除。

//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"

10-07 17:30