LoggingUtils.java 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. package com.emato.ich.utils;
  2. import com.emato.ich.contant.ExceptionType;
  3. import com.emato.ich.entity.vo.ExceptionVo;
  4. import com.emato.ich.message.ICHPublishClient;
  5. import com.emato.ich.message.ICHTopic;
  6. import com.fasterxml.jackson.core.JsonProcessingException;
  7. import com.fasterxml.jackson.databind.ObjectMapper;
  8. import org.eclipse.paho.client.mqttv3.MqttMessage;
  9. import java.io.ByteArrayOutputStream;
  10. import java.util.Date;
  11. /**
  12. * 异常日志处理工具类
  13. */
  14. public class LoggingUtils {
  15. public static void sendErrorLog(String cause, Throwable throwable){
  16. MqttMessage mqttMessage = wrapMessage((cause + ": " + (getStackTrace(throwable).toString())), ExceptionType.BIZ_ERROR);
  17. ICHPublishClient.getInstance().publish(String.format(ICHTopic.ERROR_LOG_REPORT, BaseUtils.getClientId()), mqttMessage);
  18. }
  19. public static void sendAppErrorLog(String cause, Throwable throwable){
  20. MqttMessage mqttMessage = wrapMessage((cause + ": " + (getStackTrace(throwable).toString())), ExceptionType.CRASH_ERROR);
  21. ICHPublishClient.getInstance().publish(String.format(ICHTopic.ERROR_LOG_REPORT, BaseUtils.getClientId()), mqttMessage);
  22. }
  23. private static MqttMessage wrapMessage(String cause, String type) {
  24. ExceptionVo exceptionVo = new ExceptionVo();
  25. exceptionVo.setClientId(BaseUtils.getClientId());
  26. exceptionVo.setReportData(cause);
  27. exceptionVo.setReportType(type);
  28. exceptionVo.setReportTime(DateUtils.formatDate(new Date()));
  29. // TODO 发送异常信息
  30. MqttMessage mqttMessage = new MqttMessage();
  31. mqttMessage.setQos(1);
  32. byte[] bytes = null;
  33. try {
  34. bytes = JacksonUtils.objectmapper.writeValueAsBytes(exceptionVo);
  35. } catch (JsonProcessingException e) {
  36. e.printStackTrace();
  37. }
  38. mqttMessage.setPayload(bytes);
  39. return mqttMessage;
  40. }
  41. private static ByteArrayOutputStream getStackTrace(Throwable t) {
  42. ByteArrayOutputStream buf = new java.io.ByteArrayOutputStream();
  43. t.printStackTrace(new java.io.PrintWriter(buf, true));
  44. return buf;
  45. }
  46. }