当前位置: 首页 > news >正文

Spring Boot将错误日志发送到企微微信或钉钉群

1.创建 WeComAppender ,重写 AppenderBase 的 append 方法

import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.AppenderBase;
import cn.hutool.core.thread.ThreadUtil;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.time.ZoneOffset;/*** @author: joe*/
public class WeComAppender extends AppenderBase<ILoggingEvent> {@Overrideprotected void append(ILoggingEvent event) {try {// 按项目需求自定义拼装消息串,此处仅供参考StringBuilder sb = new StringBuilder();sb.append(event.getInstant().atOffset(ZoneOffset.ofHours(8)));sb.append(event);if (event.getThrowableProxy() != null) {sb.append(" ");sb.append(event.getThrowableProxy().getMessage());}// 异步请求,避免影响主线程ThreadUtil.execAsync(() -> sendHttpRequest(sb.toString()));} catch (Exception e) {}}/*** 发送请求* @param message*/public void sendHttpRequest(String message) {try {// 机器人 webhook 地址String webhookUrl = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxxxxxxxxxxxxxxxxxxxxxxxx";URL url = new URL(webhookUrl);HttpURLConnection connection = (HttpURLConnection) url.openConnection();connection.setRequestMethod("POST");connection.setRequestProperty("Content-Type", "application/json; utf-8");connection.setRequestProperty("Accept", "application/json");connection.setDoOutput(true);// 企微机器人固定的请求结构,详情请参考企微文档(钉钉的请参考钉钉文档)String jsonInputString = "{\"msgtype\": \"text\", \"text\": {\"content\": \"\"}}";JSONObject jsonObject = JSON.parseObject(jsonInputString);jsonObject.getJSONObject("text").put("content", message);try (OutputStream os = connection.getOutputStream()) {byte[] input = jsonObject.toString().getBytes(StandardCharsets.UTF_8);os.write(input, 0, input.length);}int responseCode = connection.getResponseCode();} catch (Exception e) {}}
}

2.配置 logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration><!-- WECOM:企微告警 --><!-- class 设置为 WeComAppender --><appender name="WECOM" class="com.kjwl.framework.logback.WeComLogbackAppender"><filter class="ch.qos.logback.classic.filter.ThresholdFilter"><!-- 日志等级为 ERROR --><level>ERROR</level></filter><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss} %level [%thread] %logger{36} %msg%n</pattern></encoder></appender><root level="INFO"><appender-ref ref="WECOM" /></root></configuration>

http://www.dtcms.com/a/557298.html

相关文章:

  • 安徽省建设业协会网站wordpress怎么上传视频教程
  • 规划网站的总结网站建设开发合同范本
  • wordpress虚拟资源下载源码seo服务运用什么技术
  • 最近的面试,被打击了(随笔)
  • CSS:现代Web设计的不同技术
  • 淘宝搜索关键词排名查询工具海口seo快速排名优化
  • Spring AI--RAG知识库
  • [已更新]2025大湾区杯粤港澳金融数学建模B题数据代码思路文章完整讲解:稳定币的综合评价与发展分析
  • Java Web 开发:JSON 基础 + @Test 测试 + Cookie/Session/ 请求处理
  • 做的比较好的卡车网站桂林网上商城
  • 营销建设网站制作浙江软装设计公司
  • MIP与VR:医学影像处理与虚拟现实技术详解
  • 如何用虚拟主机建设网站房地产项目网站建设
  • 快速上手大模型:深度学习3(实践:线性神经网络Softmax)
  • 网站 标准规划电子商务网站建设方案
  • 阻塞队列(BlockingQueue)原理、实现与应用:多线程编程中的核心数据结构
  • mstscax!CCC::CCFSMProc调试记录设置为1打开调试开关
  • 树莓派连接海康威视工业相机
  • 建设家具网站手机端怎么看世界杯
  • Go语言设计模式:工厂模式详解
  • Docker 部署 openEuler 教程及常见问题解决
  • 厦门专业做网站 厦门做网站的公司 厦门做服饰网站网站开发程序员需要会的技能
  • W55MH32三模自由控:小程序按键网页随选
  • 物联网入侵检测技术综合综述报告
  • 大模型-Qwen-Agent框架:系列Agent功能介绍 (2)
  • 网站 设计理念淄博网站建设优化运营熊掌号
  • R 包的制作
  • 【矩阵分析与应用】【第5章 梯度分析与最优化】【5.2.2 矩阵迹的微分计算示例d(tr(U))=tr(dU)证明】
  • 岳阳网站设计公司网站开发意义
  • MySQL的CONCAT函数介绍