我有这个类用于触发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
事件时,我们的想法是在同一个表上查看所有通用日志。
答案 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);
}
}