这个组件主要是解决开发者错误日志及时发现和追踪问题,是基于 springboot 封装错误日志告警功能,以及全局日志 traceId 跟踪,同时支持微服务和单体架构。
<dependency> <groupId>io.github.simonlu9</groupId> <artifactId>log-alarm-spring-boot-starter</artifactId> <version>1.1.1-SB2</version> </dependency>
<dependency> <groupId>io.github.simonlu9</groupId> <artifactId>log-alarm-spring-boot-starter</artifactId> <version>1.1.1-SB3</version> </dependency>
# 添加配置 log-alarm: #当开启时候,会自动在 MDC 注入 traceID 属性 enableTraceId: true #mode 可选 wordWechat|dingding timeout: settings: - urlPattern: "^/.*$" # 匹配以 /test 开头的所有路径 threshold: 1000 # 超时时间(毫秒) mode: workWechat #机器人人配置 webhook: xxx exclude: #忽略异常类,多个逗号隔开 throwable: java.lang.RuntimeException #忽略关键字配置 keyword: # logback 配置 <configuration> <springProperty scope="context" name="logFile" source="logging.file.name" /> #引用 LogAlarmAppender 才能告警 <appender name="LOG_ALARM" class="com.ljw.logalarm.core.appender.LogAlarmAppender"> #指定过滤器进行 exclude 相关过滤 <filter class="com.ljw.logalarm.core.filter.AlarmFilter"></filter> </appender> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <!-- 输出格式 --> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%X{traceId}] [%thread] %logger{50} - %msg%n</pattern> </encoder> </appender> <root level="INFO"> <appender-ref ref="LOG_ALARM"/> <appender-ref ref="STDOUT"/> </root> </configuration>
链路追踪: fb2aa22424 应用名: xxx 线程名称: http-nio-9057-exec-7 用户编号: 请求信息: GET /sys/sync/orders 请求参数: {"hours":"1"} 请求 body: null 异常来源: com.ljw.logalarm.core.filter.ExecutionTimeFilter 日志内容: Request to [/sys/sync/orders] exceeded timeout. Duration: 67457 ms, Threshold: 60000 ms 异常时间: 2025-01-23 14:01:08 异常描述: 详细信息: 链路追踪: 85b7bc263f 应用名: xxx 线程名称: http-nio-9057-exec-10 用户编号: 请求信息: GET /sys/sync/orders 请求参数: {"hours":"1"} 请求 body: null 异常来源: xxxxxx.ControllerExceptionHandler 日志内容: [handleException] catch unhandled exception 异常时间: 2025-01-23 12:01:07 异常描述: org.springframework.jdbc.BadSqlGrammarException 详细信息: org.springframework.jdbc.BadSqlGrammarException: ### Error querying database. Cause: java.sql.SQLSyntaxErrorException: Unknown column 'updated_at' in 'field list'
springboot @Async
自定义线程池 @Bean public Executor customTaskExecutor() { TraceIdThreadPoolTaskExecutor executor = new TraceIdThreadPoolTaskExecutor(); executor.setThreadNamePrefix("trace-id-task-executor-"); executor.setCorePoolSize(4); return executor; }
springboot @Schedule
自定义线程池 @Bean public ThreadPoolTaskScheduler taskScheduler() { ThreadPoolTaskScheduler scheduler = new TraceIdThreadPoolScheduleTaskExecutor(); scheduler.setPoolSize(5); // 配置线程池大小 scheduler.setThreadNamePrefix("Scheduler-"); return scheduler; }
-- 欢迎大家提需求完善此插件 -- github 链接 https://github.com/simonlu9/log-alarm-spring-boot
![]() | 1 Solix 260 天前 via iPhone 啊……不是部署一套 EFK 就完事了吗,不用侵入 |