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

本文关键字:log4net 上下文 功能 浏览器 用于 | 更新日期: 2024-11-08 04:47:28

我想使用 log4net 在自定义属性中记录浏览器功能。这里使用的最佳上下文是什么?

  • log4net.全球语境
  • log4net.线程上下文
  • log4net.线程逻辑上下文
  • log4net.Core.LoggingEvent

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

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

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

如您所见,上下文会影响您的财产所在的范围。由于您想记录浏览器功能,因此您在Web应用程序中,因此我想有多个线程。如果要将属性保留在共享上下文(全局)中,则可能会丢失信息。我不确定线程上下文,因为线程在等待某些异步数据时可能会接收其他一些请求。

最后,事件

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