首页 > 解决方案 > 如何用枚举替换事件ID?

问题描述

我有从 EventSource 继承的类:

[EventSource(Name = "MyEventSource")]
public sealed class ExceptionHundler : EventSource
{
    public static ExceptionHundler Log = new ExceptionHundler();
    [NonEvent]
    public void WriteLog(Exception exception)
    {
        UnhandledException(exception.Message);
    }

    [Event(601, Channel = EventChannel.Admin, Message = "Unhandled exception occurred. Details: {0}", Keywords = EventKeywords.None, Level = EventLevel.Critical)]
    private void UnhandledException(string exceptionMsg)
    {
        WriteEvent(601, exceptionMsg, Environment.MachineName);
    }
}

如您所见,我在属性事件(其 601)中设置事件 ID。现在我想创建枚举并使用它而不是事件 ID,例如:

 enum EventType
{
    AppCrashed
}

和事件属性:

 [Event(EventType.AppCrashed, Channel = EventChannel.Admin, Message = "Unhandled exception occurred. Details: {0}", Keywords = EventKeywords.None, Level = EventLevel.Critical)]

有没有办法做到这一点?

标签: c#enums

解决方案


以下应该工作

[Event((int)EventType.AppCrashed, Channel = EventChannel.Admin, Message = "Unhandled exception occurred. Details: {0}", Keywords = EventKeywords.None, Level = EventLevel.Critical)]
private void UnhandledException(string exceptionMsg)
{
  WriteEvent(601, exceptionMsg, Environment.MachineName);
}

不要忘记在声明期间分配枚举值。

enum EventType
{
 AppCrashed = 601
}

推荐阅读