我的问题是,对于应用程序管理员而言,跟踪异常的最佳方法是什么? (出于维护目的,将抛出的异常通知管理员)。
向系统用户,我认为应该捕获异常并显示适当的错误消息。我想对系统进行管理,最好的方法是让消息传递系统将每个异常的详细信息作为消息发送给接收方。接收者收到新的错误消息后,该错误消息将保留在数据库中,或向管理员ping一封包含异常详细信息的电子邮件。
try{
....
}
catch(Exception e){
//what to do here? how to notify admin?
}
我的问题是,对于应用程序管理员而言,跟踪异常的最佳方法是什么? (出于维护目的,将抛出的异常通知管理员)。致...
我建议使用log4j,配置为SMTPAppender
监听致命日志。然后,只需记录一条致命消息(包含您可以获得的任何有用信息),以应对到达全局try / catch块的任何未处理的异常。
企业解决方案:
首先,请勿尝试解决应用程序本身中的通知问题。
我已经使用spring AOP在应用程序中完成了关于异常的通知。
例如
[设计应用程序时,您需要考虑两种类型的异常
您应该使用日志记录工具来记录文件系统中的每个异常,以便如果管理员希望他们可以通过文件系统查看它。
ErrorUtil
您可以创建异常日志表。在那里,编写代码以将状态为“待处理”的异常插入数据库,无论应用程序中引发了什么异常。创建将在特定时期内触发的cron job
(linux)或quartz scheduler
,并将具有预定义格式的“待处理”状态异常的邮件发送给admin用户。用“已发送”状态更新数据库条目,这样它就不会再次发送。
在代码中,要保存异常,请创建超类,即
class UserDao extends CommonDao
{
try
{
}catch(Exception e)
{
saveException(e);
}
}
class CommonDao
{
public void saveException(Exception e)
{
//write code to insert data into database
}
}
对我来说,将这种行为直接放在应用程序的代码中不是一个好主意。显然,只需简单地调用在catch子句中发送电子邮件的函数,便容易,快速且直接。如果您没有那么多时间,那就去吧。
但是您将意识到,这将产生一些需要的意外附带影响