用于捕获浏览器功能的 log4net 上下文

log4net context for capturing browser capabilities

我想用log4net来log browser capabilities in a custom property. What is the best context要在这里用?

正如您在链接到的页面中看到的那样,以下是所有这些上下文的预期差异:

  • 全局上下文由当前AppDomain中的所有线程共享。此上下文是线程安全的,可供多个线程同时使用。
  • 线程上下文仅对当前托管线程可见。
  • 逻辑线程上下文对逻辑线程可见。逻辑线程可以从一个托管线程跳转到另一个。有关详细信息,请参阅 .NET API System.Runtime.Remoting.Messaging.CallContext.
  • 每个事件都会捕获事件生成时的当前上下文状态。可以在事件本身上设置上下文数据。此上下文仅对生成事件本身的代码可见。

如您所见,上下文会影响您 属性 的生活范围。因为你想记录你在网络应用程序中的浏览器功能,所以我假设有多个线程。如果您将属性保存在共享上下文(全局)中,您可能会面临丢失信息的风险。我不确定线程​​上下文,因为线程在等待一些异步数据时可能会接收到一些其他请求。

最后,事件上下文似乎是最安全和最合乎逻辑的选择,因为您肯定会为每个浏览器(或每个请求)记录一个事件,并且不需要与其他记录器共享此信息。