繁体   English   中英

如何将抛出的异常映射到事件ID以进行日志记录?

[英]How to map a thrown exception to an event ID for logging?

在我们的代码库中,错误条件可能会导致抛出异常。 代码中的其他位置,异常处理程序捕获异常并将错误记录到Windows事件日志中。

当检测到错误并抛出异常时,我们将获得有关错误情况的最多信息,并且我希望使用将在Windows事件日志中记录的唯一事件ID来识别错误。

在抛出的异常中包含此事件ID的最佳方法是什么?

我想过使用Exception.HResult ,但这似乎是用于COM / win32互操作。 人们是否为此目的使用HResult 似乎可以将严重性映射到loglevel,将设施代码映射到Event源,将Hresult代码映射到事件ID。 这是一种常见的方法吗?

我想过使用Exception.Data字典并在抛出的异常中添加一个命名的“EventID”值,这样我的处理程序就可以使用该值来记录EventID。

有人有什么好的建议或意见吗?

你提到的方法肯定是有效的。 我在类似情况下使用的另一种方法是使我的异常类型实现具有提供事件ID的方法或属性的特定接口。

在所有这些方法中,关键是永远不要吃异常,而是将它们包含在适当的更多数据的其他异常中,然后在顶层遍历InnerException链,直到找到您正在寻找的异常。 使用特定接口的优点是可以很容易地识别以您希望的方式提供信息的异常类,而任何异常都可以在Exception.Data具有HResult或值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM