C# 从 EventRecord.Level 获取正确的事件级别
C# Getting the right event level from EventRecord.Level
我在我的应用程序中包含了一个事件查看器,用户可以在其中查看由应用程序引起的 Windows 事件日志中的事件列表,包括详细信息、事件 ID、来源等。
现在我遇到了一个小问题:就像在 windows 的事件查看器中一样,我想根据事件的级别(信息、警告、 Error/Critical).
在后面的代码中,我从 EventLogReader
returns EventRecords
的列表中获取我的所有信息。关于级别,这些 EventRecords
公开了两个属性:Level
和 LevelDisplayName
。由于 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。所以只需投射它就可以了。
我在我的应用程序中包含了一个事件查看器,用户可以在其中查看由应用程序引起的 Windows 事件日志中的事件列表,包括详细信息、事件 ID、来源等。
现在我遇到了一个小问题:就像在 windows 的事件查看器中一样,我想根据事件的级别(信息、警告、 Error/Critical).
在后面的代码中,我从 EventLogReader
returns EventRecords
的列表中获取我的所有信息。关于级别,这些 EventRecords
公开了两个属性:Level
和 LevelDisplayName
。由于 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。所以只需投射它就可以了。