通知管理员有关 Java 应用程序的新异常的最佳方法是什么?

我的问题是,跟踪应用程序管理员异常的最佳方法是什么。(出于维护目的,将引发的异常通知管理员)。

对于系统的用户,我认为应该捕获异常并显示适当的错误消息。对于系统的管理,我想,最好的方法是有一个消息传递系统,将每个异常的详细信息作为消息发送给接收者。接收方收到新的错误消息后,会将其保留在数据库中,或向管理员发送一封包含异常详细信息的电子邮件。

try{
  ....
}
catch(Exception e){
   //what to do here? how to notify admin?
}

答案 1

我建议使用log4j,配置了侦听致命日志。然后,只需记录一条致命级别消息(包含您可以获得的任何有用信息),即可查看到达全局 try/catch 块的任何未处理的异常。SMTPAppender

另请参阅:在log4j中配置SMTPAppender的正确方法是什么?


答案 2

企业解决方案:

使用SL4J并将所有消息保存到日志中。

使用 MDC 向日志消息添加标记。让这些标签描述谁应该收到通知以及错误的性质:

2014-05-24 [SystemCAD][NOTIFY=ADMIN], [ACCOUNTID=123], [SEVERITY=SEVERE], [MESSAGE="Cannot contact Google.com"]  
2014-05-24 [SystemCAD][NOTIFY=USER], [ACCOUNTID=123], [SEVERITY=SEVERE], [MESSAGE="Could not save document to Google. Support has been notified."]  

获取 Splunk 或一些类似于索引所有日志的产品,以便于搜索并创建可用于通知管理员的事件。使用PagerDutty通知管理员并创建升级,避免重复,创建触发器等。


推荐