这个组件主要是解决开发者错误日志及时发现和追踪问题,是基于 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
gaobh 7 天前 via iPhone
啊……不是部署一套 EFK 就完事了吗,不用侵入
|