监控Java接口异常_非常简单的springMVC接口异常监控

一、在applicationContent.xml配置javaMail

true

3000

二、编写发送邮件的组建

public class EmailService {

private static final Logger log = LoggerFactory.getLogger(EmailService.class);

@Autowired

private JavaMailSenderImpl javaMailSender;

/**

* 发送邮件

* @param subject

* @param content

* @param to

*/

public void sendMail(String subject, String content, String... to) {

log.info("send email subject:{}, to:{}, subject:{}", subject, to, content);

MimeMessage objMimeMessage = javaMailSender.createMimeMessage();

try {

MimeMessageHelper helper = new MimeMessageHelper(objMimeMessage, true, "utf-8");

try {

helper.setFrom(javaMailSender.getUsername(),"XX异常");

} catch (UnsupportedEncodingException e) {

helper.setFrom(javaMailSender.getUsername());

}

helper.setSubject(subject);

helper.setTo(to);

helper.setText(content,true);

} catch (MessagingException e) {

log.error("发送邮件出错.",e);

}

javaMailSender.send(objMimeMessage);

}

}

三、配置异常捕获类

/**

* 自定义的全局异常处理类

*/

public class CustomMappingExceptionResolver extends SimpleMappingExceptionResolver implements HandlerExceptionResolver{

private static Logger logger = LoggerFactory.getLogger(CustomMappingExceptionResolver.class);

@Autowired

private ExceptionCacheService exceptionCacheService;

/**

* 这里异常信息记录到cache中, 然后启动一个任务去查询cache中是否有异常信息;有则发送邮件

* 如果不放cache可以直接发送邮件

* @param request

* @param response

* @param handler

* @param ex

* @return

*/

@Override

protected ModelAndView doResolveException(HttpServletRequest request, HttpServletResponse response, Object handler,

Exception ex) {

exceptionCacheService.doExceptionStore(ex);

if (ex.getClass().getName().equals("org.apache.catalina.connector.ClientAbortException")) {

return super.doResolveException(request, response, handler, ex);

}

logger.error("请求悲剧了!!", ex);

if (WebUtils.isAjaxRequest(request)) {

ResponseEntity entity = ResponseEntity.failed();

entity.setMsg("服务器异常");

try {

WebUtils.writeJsonResponse(response, entity);

} catch (IOException e) {

logger.error("输出json居然也异常了!!", e);

}

return null;

} else {

return super.doResolveException(request, response, handler, ex);

}

}

@Override

public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler,

Exception ex) {

ModelAndView mav = new ModelAndView();

mav.setViewName("500");

exceptionCacheService.doExceptionStore(ex);

return mav;

}

}

当然要配置该类


版权声明:本文为weixin_35916518原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。