异步线程里的日志不好追踪?小支一招,轻松搞定!

数据库73

众所周知,通过唯一的链路id来追踪一次请求的所有日志,对于排查生产问题来说,会是非常给力的。
这个比较容易实现。我之前的博客也有多次提及 ▄︻┻┳═一 https://www.cnblogs.com/buguge/tag/日志链路追踪/
因此,当涉及到异步线程时,我们知道线程的名称会发生变化,因为异步线程和辅助线程是两个不同的线程。请求的完整日志不能按唯一标识进行筛选。

[En]

So, when it comes to asynchronous threading, we know that the name of the thread changes because the asynchronous thread and the worker thread are two different threads. The full log of a request cannot be filtered by a unique identity.

有没有办法呢?
问题即答案。当然是有的。

线程是用来执行任务的,任务是一段程序代码的封装。在java中,任务通过 java.lang.Runnable 来表示。使用方面,我们可以自己定义一个实现Runnable的任务类,也可以用lambda表达式的方式直接使用Runnable,来作为线程或线程池的参数。

自定义实现了Runnable的类来使用异步线程,先贴demo代码。

实现了Runnable接口的类--MyTask:
异步线程里的日志不好追踪?小支一招,轻松搞定!异步线程里的日志不好追踪?小支一招,轻松搞定!

```
package com.emaxcard.test;

import lombok.extern.slf4j.Slf4j;

@Slf4j

输入验证码查看隐藏内容

扫描二维码关注本站微信公众号 Johngo学长
或者在微信里搜索 Johngo学长
回复 svip 获取验证码
wechat Johngo学长