最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

【Java項(xiàng)目】Spring-全局異常+釘釘推送(實(shí)現(xiàn)生產(chǎn)問(wèn)題監(jiān)控)

2023-06-17 16:24 作者:美麗的程序人生  | 我要投稿

【Java項(xiàng)目】Spring-全局異常+釘釘推送(實(shí)現(xiàn)生產(chǎn)問(wèn)題監(jiān)控)

概述

生產(chǎn)環(huán)境的線上問(wèn)題,通常出現(xiàn)時(shí)都比較緊急,由于開(kāi)發(fā)人員不能直接debug生產(chǎn)環(huán)境,通常處理起來(lái)不是很容易。因此,生產(chǎn)環(huán)境出問(wèn)題時(shí),如果能夠?qū)?bào)錯(cuò)的接口和參數(shù),推送到釘釘群,就可以幫助技術(shù)人員快速排查生產(chǎn)問(wèn)題,避免對(duì)業(yè)務(wù)影響,出現(xiàn)生產(chǎn)事故。

這里結(jié)合Spring 全局異常和釘釘推送,介紹如何實(shí)現(xiàn)生產(chǎn)問(wèn)題監(jiān)控。

全局異常

Spring全局異常主要使用@ControllerAdvice 注解和@ExceptionHandler注解

@ControllerAdvice

該注解作用是給Controller控制器添加統(tǒng)一的操作或處理,結(jié)合@ExceptionHandler用于全局異常的處理,也可以使用@RestControllerAdvice以文本返回到瀏覽器,實(shí)際中該注解還有很多用途,這里不做深究,感興趣可以下來(lái)了解;

@ExceptionHandler
  • 用來(lái)統(tǒng)一處理方法拋出的異常;
  • +ExceptionHandler注解中可以添加參數(shù),參數(shù)是某個(gè)異常類的class,代表這個(gè)方法專門處理該類異常;
?@ExceptionHandler(NumberFormatException.class)
?public String handleExeption(Exception ex) {
??System.out.println("拋異常了:" + ex);
??ex.printStackTrace();
??String resultStr = "異常:NumberFormatException";
??return resultStr;
?}

此時(shí)注解的參數(shù)是NumberFormatException.class,表示只有方法拋出NumberFormatException時(shí),才會(huì)調(diào)用該方法。

  • 如果是通過(guò)try catch處理了異常,將不會(huì)進(jìn)入到全局異常處理類,必須是通過(guò)運(yùn)行時(shí)拋出的異?;蛘呤峭ㄟ^(guò)throw new 加對(duì)應(yīng)的異常,才會(huì)進(jìn)入@ExceptionHandler 攔截。
配置過(guò)濾器

過(guò)濾器的作用,就是把httpServeletRequest包裝成ContentCachingRequestWrapper類型繼續(xù)往下傳。

?@Component
?public class RequestCachingFilter extends OncePerRequestFilter {
??@Override
??protected void doFilterInternal(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, FilterChain filterChain) throws ServletException, IOException {
????filterChain.doFilter(new ContentCachingRequestWrapper(httpServletRequest), httpServletResponse);
??}
?}

第二步就是在使用的使用用方法getContentAsByteArray獲取入?yún)⒅担?/p>

?if(req != null && req instanceof ContentCachingRequestWrapper){
????????ContentCachingRequestWrapper wrapper =(ContentCachingRequestWrapper) req;
????????log.error("request_body:{}", StringUtils.toEncodedString(wrapper.getContentAsByteArray(), Charset.forName(wrapper.getCharacterEncoding()))
????????);
??????}

這樣你就獲取到來(lái)自客戶端請(qǐng)求的入?yún)?。注意inputStream只能讀一次流就會(huì)被關(guān)閉,不會(huì)再被讀取,所以如果在序列化等過(guò)程中讀過(guò)一次inputStream,之后就不要嘗試自己再讀,會(huì)拋異常,無(wú)法讀取數(shù)據(jù)。

參考: https://blog.csdn.net/weixin_41953346/article/details/127882004

釘釘群消息推送

詳細(xì)的釘釘推送API可以參考地址:https://open.dingtalk.com/document/orgapp/custom-robot-access

釘釘群配置




總結(jié)

1、使用Spring 全局異常,可以對(duì)代碼異常信息進(jìn)行統(tǒng)一攔截;

2、使用釘釘推送,將異常信息及時(shí)推送到技術(shù)人員群里,及時(shí)反饋;

3、技術(shù)人員通過(guò)報(bào)錯(cuò)信息,監(jiān)控生產(chǎn)環(huán)境,也可以幫助高效解決問(wèn)題。

示例代碼github地址:

https://github.com/zhcyixin/zhc-java.git

歡迎大家下載,有問(wèn)題可以在評(píng)論區(qū)交流。

【Java項(xiàng)目】Spring-全局異常+釘釘推送(實(shí)現(xiàn)生產(chǎn)問(wèn)題監(jiān)控)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
遵化市| 岫岩| 龙口市| 福州市| 洞头县| 定边县| 汝阳县| 彝良县| 新晃| 辰溪县| 南郑县| 岑溪市| 伊宁县| 黔西县| 景德镇市| 龙泉市| 绥德县| 正宁县| 梧州市| 格尔木市| 玉林市| 慈利县| 内乡县| 即墨市| 那曲县| 连江县| 岚皋县| 水城县| 邢台县| 阿合奇县| 灌南县| 桑植县| 安福县| 威远县| 育儿| 潜山县| 安溪县| 南漳县| 建平县| 北票市| 申扎县|