如何控制通过事件源触发的 ETW 事件的事件级别
本文关键字:事件 ETW 事件源 何控制 控制 | 更新日期: 2023-09-27 18:33:12
我有这个用于触发 ETW 事件的类:
public sealed class EventSourceWriter : EventSource
{
public static EventSourceWriter Logger = new EventSourceWriter();
[Event(1, Version = 0, Level = EventLevel.Informational)]
public void Log(string Log)
{
WriteEvent(1, Log);
}
}
如您所见,我将Log
方法顶部的EventLevel
设置为属性值。有没有办法动态设置它以将不同的事件级别记录到同一事件?
这个想法是在代理捕获ETW
事件时查看与输出相同的表上的所有通用日志。
正如 mike-z 为 .NET 4.6 指出的那样,你可以使用动态事件将其存档,但在这种情况下,这些事件不会包含在清单中,并且并非所有 ETW 工具都已更新为支持自描述事件。
但通常,您像这样编写 EventSource 类来存档:
public sealed class EventSourceWriter : EventSource
{
public static EventSourceWriter Logger = new EventSourceWriter();
[Event(1, Level = EventLevel.Informational)]
public void LogInformational(string message)
{
WriteEvent(1, message);
}
[Event(2, Level = EventLevel.Warning)]
public void LogWarning(string message)
{
WriteEvent(2, message);
}
[Event(3, Level = EventLevel.Error)]
public void LogError(string message)
{
WriteEvent(3, message);
}
}