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

问题描述 投票:12回答:9

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

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

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

我的问题是,对于应用程序管理员而言,跟踪异常的最佳方法是什么? (出于维护目的,将抛出的异常通知管理员)。致...

java jakarta-ee exception-handling struts2 jms
9个回答
11
投票

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


10
投票

企业解决方案:


7
投票

首先,请勿尝试解决应用程序本身中的通知问题。


6
投票

我已经使用spring AOP在应用程序中完成了关于异常的通知。

例如


3
投票

[设计应用程序时,您需要考虑两种类型的异常

  • 用户定义的业务例外

2
投票

考虑使用标准日志记录(例如log4j)并使用适合您的附加程序-前面提到的SMTP或自定义。存在称为日志记录服务器的解决方案-它们在通知,过滤,存储,处理等方面提供了高度的灵活性。ScribeFlume是开始阅读和调查的好地方。可以在here上找到关于此主题的精彩讨论。

[还有一些云解决方案可用,从SentryLogDigger(自己安装)的自动化解决方案,再到Amazon SQS的更底层的设置。


2
投票

您应该使用日志记录工具来记录文件系统中的每个异常,以便如果管理员希望他们可以通过文件系统查看它。

ErrorUtil


1
投票

您可以创建异常日志表。在那里,编写代码以将状态为“待处理”的异常插入数据库,无论应用程序中引发了什么异常。创建将在特定时期内触发的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
  }
}

0
投票

对我来说,将这种行为直接放在应用程序的代码中不是一个好主意。显然,只需简单地调用在catch子句中发送电子邮件的函数,便容易,快速且直接。如果您没有那么多时间,那就去吧。

但是您将意识到,这将产生一些需要的意外附带影响

  • 控制异常解析的性能
© www.soinside.com 2019 - 2024. All rights reserved.