.net - 删除 ThreadContext 属性

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

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

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

现在我正在使用 Log4Net,我们的应用程序使用属性: 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"

关于.net - 删除 ThreadContext 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7613654/

相关文章:

asp.net-mvc-3 - MVC Razor GUI 和 Coder 协同工作

Python:如何在 python 使用日志记录模块中创建和使用自定义记录器?

c# - 标准化验证和错误检查C#

.net - .NET 中的单例约定

c# - 在 app.config 中设置值 - 没有对程序文件的写入权限

jquery - jquery.validate.unobtrusive 中的 setValidationValues 在文件外部不可用?

django - 如何在 Django Rest Framework 中记录 4XX Http 状态的请求和响应?

c# - XmlSerializer 和可为空的属性

.net - 如何替换标准 DataAnnotations 错误消息

jquery - ASP.Net MVC 3 : Custom unobtrusive validation