美文网首页
java钉钉日志监控

java钉钉日志监控

作者: 定金喜 | 来源:发表于2023-01-18 13:23 被阅读0次

背景

目前依赖测试提的问题,没法做到实时监控,所以可以将环境的报错信息实时上传到钉钉群,可以at对应的人,对私有化部署的考虑到可能存在外网不能访问的问题,暂时不考虑,公司的sass环境是否考虑增加。

实现

1.增加统一错误处理切面

@ControllerAdvice
public class GlobalDefaultExceptionHandler {
    private Logger logger = LoggerFactory.getLogger(GlobalDefaultExceptionHandler.class);

    @ExceptionHandler(value = Exception.class)
    public Object defaultErrorHandler(HttpServletRequest request, HttpServletResponse response, Exception e) throws Exception{
        if(response.isCommitted()){
            return null;
        }

        Integer code = ErrorCode.UN_KNOW.getCode();
        String msg = null;
        if (e instanceof AtlasException) {
            logger.error("AtlasException,detail=", e);
            code = ((AtlasException)e).getCode();
        }else{
            logger.error("uncatched exception,detail=", e);
        }
        msg = e.getMessage();

        code = (code== null ? ErrorCode.UN_KNOW.getCode() : code);

        ErrorLogger.core("应用报警", "errorCode={},msg={}",code, msg, e);
        if (isJsonRequest(request)) {
            ResponseResult responseResult = new ResponseResult();
            responseResult.setCode(code);
            responseResult.setMsg(msg);
            responseJSON(response, responseResult);
            return null;
        }

        logger.error("error uri : {}", request.getRequestURI(), e);

        throw e;
    }

    private boolean isJsonRequest(HttpServletRequest request) {
        String header = request.getHeader("content-type");
        return header == null || header.contains("json");
    }

    private void responseJSON(HttpServletResponse response, Object obj) {
        response.addHeader("Cache-Control", "no-cache");
        response.setContentType("application/json;charset=UTF-8");
        PrintWriter out = null;
        try {
            out = response.getWriter();
            response.setStatus(HttpStatus.OK.value());
            out.write(JSON.toJSONString(obj));
        } catch (Exception e) {

        } finally {
            if (out != null) {
                out.close();
            }
        }
    }
}

2.其他代码

@Getter
public class AtlasException extends RuntimeException {

    private Integer code;

    private String msg;

    private String enMsg;

    public AtlasException() {
    }

    public AtlasException(String msg) {
        super(msg);
        this.enMsg = msg;
        this.msg = msg;
    }

    public AtlasException(Integer code, String msg) {
        super(msg);
        this.code = code;
        this.enMsg = msg;
        this.msg = msg;
    }

    public AtlasException(Integer code, String msg, String enMsg) {
        super(msg);
        this.code = code;
        this.msg = msg;
        this.enMsg = enMsg;
    }

    public AtlasException(AtlasErrorCodeMsgI18n atlasErrorCodeMsgI18n) {
        this(atlasErrorCodeMsgI18n.getCode(), atlasErrorCodeMsgI18n.getMsg(), atlasErrorCodeMsgI18n.getEnMsg());
    }

    public AtlasException(AtlasErrorCodeMsgI18n atlasErrorCodeMsgI18n, Object... objs) {
        this(atlasErrorCodeMsgI18n.getCode(), MessageFormat.format(atlasErrorCodeMsgI18n.getMsg(), objs),
                MessageFormat.format(atlasErrorCodeMsgI18n.getEnMsg(), objs));
    }

    public AtlasException(ErrorCode errorCode) {
        super(errorCode.getMsg());
        this.code = errorCode.getCode();
        this.enMsg = errorCode.getMsg();
    }

    public AtlasException(ErrorCode errorCode, Object... obj) {
        super(MessageFormat.format(errorCode.getMsg(), obj));
        this.code = errorCode.getCode();
        this.enMsg = MessageFormat.format(errorCode.getMsg(), obj);
    }

}

相关文章

  • java钉钉日志监控

    背景 目前依赖测试提的问题,没法做到实时监控,所以可以将环境的报错信息实时上传到钉钉群,可以at对应的人,对私有化...

  • Go使用Curl推送钉钉消息

    背景 最近在用Go实现业务日志实时监控,当捕捉到error级别的日志时,想要推送钉钉消息到群里进行通知,下面代码实...

  • 钉钉日志

    今日完成工作 时间:2018年7月9日 课程:基础入门班 地区:A18 甘肃省定西市陇西县 助教:张艳 总打卡次数...

  • zabbix监控钉钉报警

    1,钉钉上添加机器人,复制webhook 2,找一下zabbix server 上定义的告警脚本目录 3,在/us...

  • 钉钉日志导出

    钉钉只能单次导出一月间隔的日志,导出默认格式为.xls 用WPS将.xls导出为.csv格式 在 网站 [http...

  • Python 钉钉机器人

    问题 找一个能够能够将本地主机监控日志发送到移动端的工具。微信不允许调用web接口,找到了钉钉。 简单使用 主要测...

  • 121-配置zabbix通过钉钉机器人报警

    钉钉机器人的设置,参见《116-钉钉机器人》zabbix服务器监控到异常,可以通过各种方式发送报警消息。配置步骤如...

  • Linux进程监控 + 钉钉通知

    进程监控脚本 背景 启动于正式服务器的项目,有时会因为某种因素,例如docker内存超限因而容器崩溃(前不久就遇过...

  • 如何使用钉钉小机器人

    本人使用这个钉钉小机器人目前是用于监控异常提醒 使用步骤1.创建一个钉钉群,点开“智能群助手”,添加机器人,选择要...

  • 值得收藏的shell脚本

    1. 轮询检测Apache状态并启用钉钉报警 2. 一台监控主机,一台被监控主机。被监控主机分区使用率大于80%,...

网友评论

      本文标题:java钉钉日志监控

      本文链接:https://www.haomeiwen.com/subject/mdyxhdtx.html