控制 .NET Framework 日志记录
可以使用 Windows 事件跟踪 (ETW) 来记录公共语言运行时 (CLR) 事件。 可以使用以下工具来创建和查看跟踪:
Windows 性能工具包中的 Xperf 工具。 有关 Xperf 的详细信息,请参阅 Windows 性能博客。
若要捕获 CLR 事件信息,必须在计算机上安装 CLR 提供程序。 若要确认该提供程序已安装,请在命令提示符处键入 logman query providers
。 将显示提供程序的列表。 此列表应包含与 CLR 提供程序对应的项,如下所示。
Provider GUID
-------------------------------------------------------------------------------
.NET Common Language Runtime {E13C0D23-CCBC-4E12-931B-D9CC2EEE27E4}.
如果未列出 CLR 提供程序,则可以通过使用 Windows Wevtutil 命令行工具在 Windows Vista 和更高版本的操作系统上安装该提供程序。 以管理员身份打开“命令提示符”窗口。 将提示目录更改为 .NET Framework 4 文件夹 (%WINDIR%\Microsoft.NET\Framework[64]\v4.<.NET version>\)。 此文件夹包含 CLR-ETW.man 文件。 在命令提示符处,键入以下命令来安装 CLR 提供程序:
wevtutil im CLR-ETW.man
捕获 CLR ETW 事件
可使用 Logman 和 Xperf 命令行工具来捕获 ETW 事件,并使用 Tracerpt 和 Xperf 工具来解码跟踪事件。
若要启用日志记录,用户必须指定以下三项:
进行通信的提供程序。
一个表示一组关键字的 64 位数。 每个关键字都表示提供程序可启用的一组事件。 此数字表示要启用的关键字的组合集。
一个表示进行记录的级别(详细信息)的较小数。 级别 1 表示最简明,级别 5 表示最详细。 级别 0 是默认值,其含义将因提供程序而异。
使用 Logman 捕获 CLR ETW 事件
在命令提示符处,键入:
logman start clrevents -p {e13c0d23-ccbc-4e12-931b-d9cc2eee27e4} 0x1CCBD 0x5 -ets -ct perf
其中:
-p
参数标识提供程序 GUID。0x1CCBD
指定将引发的事件的类别。0x5
设置记录的级别(在本例中为详细级别 (5))。-ets
参数指示 Logman 将命令发送给事件跟踪会话。-ct perf
参数指定QueryPerformanceCounter
函数将用于记录每个事件的时间戳。
若要停止记录事件,请键入:
logman stop clrevents -ets
此命令创建一个名为 clrevents.etl 的二进制跟踪文件。
使用 Xperf 捕获 CLR ETW 事件
在命令提示符处,键入:
xperf -start clr -on e13c0d23-ccbc-4e12-931b-d9cc2eee27e4:0x1CCBD:5 -f clrevents.etl
其中 GUID 是 CLR ETW 提供程序 GUID,
0x1CCBD:5
指跟踪级别 5(详细)及以下级别的所有事件。若要停止跟踪,请键入:
Xperf -stop clr
此命令创建一个名为 clrevents.etl 的跟踪文件。
查看 CLR ETW 事件
使用下面列出的命令来查看 CLR ETW 事件。 有关事件的说明,请参见 CLR ETW 事件。
使用 Tracerpt 查看 CLR ETW 事件
在命令提示符处,键入:
tracerpt clrevents.etl
此命令创建两个文件:dumpfile.xml 和 summary.txt。 dumpfile.xml 文件列出所有事件,summary.txt 提供事件的摘要。
使用 Xperf 查看 CLR ETW 事件
在命令提示符处,键入:
xperf clrevents.etl
此命令打开 Xperf ETL 文件查看器。 在此查看器中,CLR 事件将显示在“一般事件”视图中。 要显示按类型分类的事件的数据网格,请选择此视图中的时间区域,然后右键单击并选择“摘要”。
将 .etl 文件转换为逗号分隔值文件
在命令提示符处,键入:
xperf -i clrevents.etl -f clrevents.csv
此命令可使 XPerf 将事件转储为可以查看的逗号分隔值 (CSV) 文件。 由于各个事件具有不同的字段,因此该 CSV 文件中的数据之前有多个标题行。 每行的第一个字段为事件类型,它指示应使用哪一个标题来确定字段的其余部分。