1. 程式人生 > 程式設計 >一個針對異常資訊通知的springboot starter

一個針對異常資訊通知的springboot starter

前言

作為後端開發者,專案上線之後難免會遇到各種問題,一個良好且及時的異常通知機制可以讓我們在專案的維護上避免很多不必要的麻煩。

本專案的開發願景是為了給使用者線上上專案的問題排查方面能夠帶來幫助,簡單配置,做到真正的開箱即用,同時異常資訊儘量詳細,幫助開發者快速定位問題。

目前支援基於釘釘和郵箱的異常通知,以後有時間還會擴充套件其他通知方式,同時也歡迎有興趣的開發者能夠參與進來,共同完善

使用方式

pom.xml中增加專案依賴

本專案現已釋出到maven中央倉庫,可以直接通過以下座標引入依賴

  <dependency>
     <groupId>com.github.kongchong</groupId>
     <artifactId>exception-notice-spring-boot-starter</artifactId>
     <version>版本號</version>
  </dependency>
複製程式碼

釘釘配置

第一步:建立釘釘群 並在群中新增自定義機器人 對於不太瞭解釘釘機器人配置的同學可以參考:釘釘機器人

第二步:增加配置檔案

以下以yml配置檔案的配置方式為例

exception:
  notice:
    enable: 啟用開關 false或不配置的話本專案不會生效
    projectName: 指定異常資訊中的專案名,不填的話預設取 spring.application.name的值
    included-trace-package: 追蹤資訊的包含的包名,配置之後只通知此包下的異常資訊
    period: 異常資訊傳送的時間週期 以秒為單位 預設值5,異常資訊通知並不是立即傳送的,預設設定了5s的週期,主要為了防止異常過多通知刷屏,同時釘釘針對異常通知刷屏的情況也增加了限流措施,建議不要修改
    exclude-exceptions:
      - 需要排除的異常通知,注意 這裡是異常類的全路徑,可多選
    ## 釘釘配置
ding-talk: web-hook: 釘釘機器人的webHook地址,可依次點選釘釘軟體的頭像,機器人管理,選中機器人來檢視 at-phones: - 釘釘機器人傳送通知時 需要@的釘釘使用者賬戶,可多選 複製程式碼

郵箱配置

這裡以qq郵箱為例

第一步:專案中引入郵箱相關依賴

  <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-mail</artifactId>
  </dependency>
複製程式碼

第二步:增加配置檔案

exception:
  notice:
    enable: 啟用開關 false或不配置的話本專案不會生效
    projectName: 指定異常資訊中的專案名,不填的話預設取 spring.application.name的值
    included-trace-package: 追蹤資訊的包含的包名,配置之後只通知此包下的異常資訊
    period: 異常資訊傳送的時間週期 以秒為單位 預設值5,異常資訊通知並不是立即傳送的,預設設定了5s的週期,主要為了防止異常過多通知刷屏,同時釘釘針對異常通知刷屏的情況也增加了限流措施,建議不要修改
    exclude-exceptions:
      - 需要排除的異常通知,注意 這裡是異常類的全路徑,可多選
    ## 郵箱配置
    mail:
      from: 傳送人地址
      to: 接收人地址
      cc: 抄送人地址
spring:
 mail:
   host: smtp.qq.com  郵箱server地址 
   username: [email protected]  server端傳送人郵箱地址
   password: 郵箱授權碼

複製程式碼

郵箱授權碼可以按以下方法獲取

開啟QQ郵箱網頁→設定→賬戶→POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服務→開啟POP3/SMTP服務,然後就能看到授權碼了

注意:釘釘和郵箱配置支援單獨和同時啟用

配置好了配置檔案,接下來可以寫個例子測試一下了

如上圖所示,在一個測試方法中手動丟擲了一個引數錯誤異常,接下來執行一下看一下效果

釘釘效果:

釘釘

郵箱效果:

郵箱

由於報錯太多沒有全部截圖下來,感興趣的同學可以自行測試一下

注意

本工具僅支援整合在springboot+mvc專案中,同時需要jdk版本1.8+

致謝

本專案參考以下專案:

  1. prometheus-spring-boot-starter

作者