如何控制通过EventSource触发的ETW事件的EventLevel?

时间:2016-02-04 19:30:53

标签: c# etw

我有这个类用于触发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);
    }
}

如您所见,我将EventLevel方法置于Log方法之上作为属性值。有没有办法我可以动态设置它以将不同的EventLevels记录到同一个事件?

当代理捕获ETW事件时,我们的想法是在同一个表上查看所有通用日志。

1 个答案:

答案 0 :(得分:1)

正如mike-z指出的.NET 4.6,您可以使用dynamic events对其进行归档,但在这种情况下,这些事件不会包含在清单中,而不是全部包含在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);
    }
}