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

Spring Boot配置error日志发送至企业微信

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;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.hi.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/365558.html

相关文章:

  • EI会议:第七届人工智能与先进制造国际会议(AIAM 2025)
  • 多智能体协作系统(CrewAI)
  • 素材合集!直播间带货音乐BGM合集,抖音直播间常用热门音乐合集,根据中文分类,方便查找
  • AI重塑SaaS:从被动工具到智能角色的技术演进路径
  • Shell 三剑客之 awk 命令详解(理论+实战)
  • Datawhale AI夏令营复盘[特殊字符]:我如何用一个Prompt,在Coze Space上“画”出一个商业级网页?
  • SDK介绍
  • MCP模型库哪个好?2025年收录12万+服务的AI智能体工具集成平台推荐
  • 面试复习题-kotlin
  • Springboot 练手项目(删除部门-接口开发)
  • Get the pikachu靶场SSRF漏洞 (windows环境)
  • AR技术赋能电力巡检:开启智能安全新时代
  • 前端-安装VueCLI
  • Ubuntu环境下的 RabbitMQ 安装与配置详细教程
  • 【开题答辩全过程】以 基于大数据的地震数据分析系统的设计与实现为例,包含答辩的问题和答案
  • 理解用户需求的方法
  • JDBC的功能和使用
  • 算法 --- 分治(快排)
  • 机器学习在Backtrader多因子模型中的应用
  • 2025年大学必考的十大计算机专业证书推荐:解锁你的职业未来!
  • 从0到1:解锁“预训练+微调”的AI魔法密码
  • 如何解决虚拟机网络连接问题:配置固定 IP 篇
  • 精密板料矫平机:把“皱巴巴”的金属熨成镜面
  • k8s,v1.30.4,安装使用docker
  • java面试中经常会问到的spring问题有哪些(基础版)
  • 日志打印--idf的esp32
  • 如何区分 Context Engineering 与 Prompt Engineering
  • 用AI做旅游攻略,真能比人肉整理靠谱?
  • 特斯拉“宏图计划4.0”发布!马斯克:未来80%价值来自机器人
  • Springboot3+SpringSecurity6Oauth2+vue3前后端分离认证授权-客户端