用于捕获浏览器功能的 log4net 上下文
本文关键字:log4net 上下文 功能 浏览器 用于 | 更新日期: 2024-11-08 04:47:28
我想使用 log4net 在自定义属性中记录浏览器功能。这里使用的最佳上下文是什么?
- log4net.全球语境
- log4net.线程上下文
- log4net.线程逻辑上下文
- log4net.Core.LoggingEvent
正如您在链接到的页面中看到的那样,以下是所有这些上下文的预期差异:
- 全局上下文由当前应用程序域中的所有线程共享。此上下文是线程安全的,可由多个线程同时使用。 线程
- 上下文仅对当前托管线程可见。 逻辑线程
- 上下文对逻辑线程可见。逻辑线程可以从一个托管线程跳转到另一个托管线程。有关更多详细信息,请参阅 .NET API System.Runtime.Remoting.Messaging.CallContext。
- 每个事件捕获生成事件时的当前上下文状态。可以在事件本身上设置上下文数据。此上下文仅对生成事件本身的代码可见。
如您所见,上下文会影响您的财产所在的范围。由于您想记录浏览器功能,因此您在Web应用程序中,因此我想有多个线程。如果要将属性保留在共享上下文(全局)中,则可能会丢失信息。我不确定线程上下文,因为线程在等待某些异步数据时可能会接收其他一些请求。
最后,事件上下文似乎是最安全、最合乎逻辑的选择,因为您肯定会为每个浏览器(或每个请求)记录一个事件,并且不需要与其他记录器共享此信息。