.NET 中的已知事件提供程序

.NET 运行时和库通过许多不同的事件提供程序编写诊断事件。 根据诊断需求,可以选择要启用的相应提供程序。 本文介绍了 .NET 运行时和库中最常用的一些事件提供程序。

CoreCLR

“Microsoft-Windows-DotNETRuntime”提供程序

此提供程序从 .NET 运行时发出各种事件,包括 GC、加载程序、JIT、异常和其他事件。 请在运行时提供程序事件列表中详细了解此提供程序中的各种事件。

“Microsoft-DotNETCore-SampleProfiler”提供程序

此提供程序是 .NET 运行时事件提供程序,用于对托管调用堆栈进行 CPU 采样。 启用后,它会每毫秒捕获一次每个线程的托管调用堆栈的快照。 若要启用此捕获功能,必须将 EventLevel 指定为 Informational 或更高级别。

框架库

“Microsoft-Extensions-DependencyInjection”提供程序

此提供程序记录来自 DependencyInjection 的信息。 下表显示 Microsoft-Extensions-DependencyInjection 提供程序记录的事件:

事件名称 关键字 Level 说明
CallSiteBuilt 详细级别 (5) 调用站点已生成。
ServiceResolved 详细级别 (5) 服务已解决。
ExpressionTreeGenerated 详细级别 (5) 表达式树已生成。
DynamicMethodBuilt 详细级别 (5) DynamicMethod 已生成。
ScopeDisposed 详细级别 (5) 范围已释放。
ServiceRealizationFailed 详细级别 (5) 服务实现已失败。
ServiceProviderBuilt ServiceProviderInitialized(0x1) 详细级别 (5) ServiceProvider 已生成。
ServiceProviderDescriptors ServiceProviderInitialized(0x1) 详细级别 (5) ServiceProvider 生成过程中使用的 ServiceDescriptor 列表。

“System.Buffers.ArrayPoolEventSource”提供程序

此提供程序记录来自 ArrayPool 的信息。 下表显示了 ArrayPoolEventSource 记录的事件:

事件名称 Level 说明
BufferRented 详细级别 (5) 缓冲区已成功租用。
BufferAllocated 信息性 (4) 缓冲区由池分配。
BufferReturned 详细级别 (5) 缓冲区返回到池中。
BufferTrimmed 信息性 (4) 由于内存不足或不活动,试图释放缓冲区。
BufferTrimPoll 信息性 (4) 正在检查以剪裁缓冲区。
BufferDropped 信息性 (4) 返回到池时,会丢弃缓冲区。

“System.Net.Http”提供程序

此提供程序记录来自 HTTP 堆栈的信息。 下表显示了 System.Net.Http 提供程序记录的事件:

事件名称 Level 说明
RequestStart 信息性 (4) HTTP 请求已启动。
RequestStop 信息性 (4) HTTP 请求已完成。
RequestFailed 错误 (2) HTTP 请求失败。
ConnectionEstablished 信息性 (4) HTTP 连接已建立。
ConnectionClosed 信息性 (4) HTTP 连接已关闭。
RequestLeftQueue 信息性 (4) HTTP 请求已离开请求队列。
RequestHeadersStart 信息性 (4) 针对标头的 HTTP 请求已启动。
RequestHeaderStop 信息性 (4) 针对标头的 HTTP 请求已完成。
RequestContentStart 信息性 (4) 针对内容的 HTTP 请求已启动。
RequestContentStop 信息性 (4) 针对内容的 HTTP 请求已完成。
ResponseHeadersStart 信息性 (4) 针对标头的 HTTP 响应已启动。
ResponseHeaderStop 信息性 (4) 针对标头的 HTTP 响应已完成。
ResponseContentStart 信息性 (4) 针对内容的 HTTP 响应已启动。
ResponseContentStop 信息性 (4) 针对内容的 HTTP 响应已完成。

“System.Net.NameResolution”提供程序

此提供程序记录与域名解析有关的信息。 下表显示了 System.Net.NameResolution 记录的事件:

事件名称 Level 说明
ResolutionStart 信息性 (4) 域名解析已启动。
ResolutionStop 信息性 (4) 域名解析已完成。
ResolutionFailed 信息性 (4) 域名解析失败。

“System.Net.Sockets”提供程序

此提供程序记录来自 Socket 的信息。 下表显示了 System.Net.Sockets 提供程序记录的事件:

事件名称 Level 说明
ConnectStart 信息性 (4) 尝试开始套接字连接已启动。
ConnectStop 信息性 (4) 尝试开始套接字连接已完成。
ConnectFailed 信息性 (4) 尝试开始套接字连接失败。
AcceptStart 信息性 (4) 尝试接受套接字连接已启动。
AcceptStop 信息性 (4) 尝试接受套接字连接已完成。
AcceptFailed 信息性 (4) 尝试接受套接字连接失败。

“System.Threading.Tasks.TplEventSource”提供程序

此提供程序记录有关任务并行库的信息,例如任务计划程序事件。 下表显示了 TplEventSource 记录的事件:

事件名称 关键字 Level 说明
TaskScheduled TaskTransfer(0x1)

Tasks(0x2)
信息性 (4) Task 已加入任务计划程序的队列中。
TaskStarted Tasks(0x2) 信息性 (4) Task 已开始执行。
TaskCompleted TaskStops(0x40) 信息性 (4) Task 已完成执行。
TaskWaitBegin TaskTransfer(0x1)

TaskWait(0x2)
信息性 (4) 当对 Task 完成的隐式或显式等待启动时触发。
TaskWaitEnd Tasks(0x2) 详细级别 (5) 等待 Task 完成返回时触发。
TaskWaitContinuationStarted Tasks(0x2) 详细级别 (5) 当与 TaskWaitEnd 关联的工作(方法)启动时触发。
TaskWaitContinuationCompleted TaskStops(0x40) 详细级别 (5) 当与 TaskWaitEnd 关联的工作(方法)完成时触发。
AwaitTaskContinuationScheduled TaskTransfer(0x1)

Tasks(0x2)
信息性 (4) 在安排 Task 的异步持续时触发。

ASP.NET Core

ASP.NET Core 还提供了数种事件来帮助诊断 ASP.NET Core 堆栈中的问题。

若要详细了解 ASP.NET Core 中的事件以及如何使用这些事件,请参阅登录 .NET Core 和 ASP.NET Core

Entity Framework Core

EF Core 也提供了事件来帮助你诊断 EF Core 中的问题。

若要详细了解 EF Core 中的事件及其使用方式,请查看 EF Core 中的 .NET 事件