C# 从 EventRecord.Level 获取正确的事件级别

C# Getting the right event level from EventRecord.Level

我在我的应用程序中包含了一个事件查看器,用户可以在其中查看由应用程序引起的 Windows 事件日志中的事件列表,包括详细信息、事件 ID、来源等。

现在我遇到了一个小问题:就像在 windows 的事件查看器中一样,我想根据事件的级别(信息、警告、 Error/Critical).

在后面的代码中,我从 EventLogReader returns EventRecords 的列表中获取我的所有信息。关于级别,这些 EventRecords 公开了两个属性:LevelLevelDisplayName。由于 LevelDisplayName 依赖于文化,因此我必须使用 Level - 这是一种 byte? 类型。

如何从中获得正确的水平?我知道有一个 StandardEventLevel 枚举,但我不知道您是否可以将其与级别匹配,如果可以,如何转换它。我在想象这样的事情:

switch (__eventRecord.Level)
            {
                case(StandardEventLevel.Informational):
                    __level = "Information";
                    break;
                case(StandardEventLevel.Warning):
                    __level = "Warning";
                    break;
                case(StandardEventLevel.Error):
                case(StandardEventLevel.Critical):
                    __level = "Error";
                    break;
            }

有没有人知道如何以正确的方式处理这个问题?

好吧,我认为简单的转换 - (StandardEventLevel)__eventRecord.Level - 没有用,因为有时我似乎没有在 switch case 中得到结果。结果发现日志记录出了点问题,它把一些事件记录为 'LogAlways' 或级别 0。所以只需投射它就可以了。