使用logrus库,并发请求下,如何区分开哪些日志属于哪个请求?

1. 运行环境

go1.19 linux/amd64

2. 问题描述?

如果logrus库打印日志,并发请求下,如下代码,如果直接打印,日志会混在一起,无法分清哪条日志属于哪个请求,大家都是用什么办法来区分开呢?

在main中创建了一个logrus实例,然后进行一些初始化操作

var log = logrus.New()

func main() {
  log.Out = os.Stdout
  log.Formatter = &logrus.JSONFormatter{}
  ....
}

在接收请求的函数中,使用main中的全局变量log进行打印日志

func (ctl *RerankControllerStruct) Rerank(ctx context.Context, req *pb.RerankRequest) (resp *pb.RerankResponse, err error) {
    log.Info("RerankType:", req.GetRerankType(), ", Qid:", req.GetQid())
    ......
}

每个请求都使用同一个log变量,导致日志都混在一起,如果每次请求都创建一个新的log,如logrus.New(),那就会导致每次创建的log都需要初始化,所以有什么好的方法吗?

3. 您期望得到的结果?

并发请求,区分开打印的日志属于哪个请求

4. 您实际得到的结果?

2年前 评论
OverCookkkkk (楼主) 2年前
AB (作者) 2年前
OverCookkkkk (楼主) 2年前
讨论数量: 7

从入口处, logger 透传

2年前 评论
AB 2年前
2年前 评论
OverCookkkkk (楼主) 2年前
AB (作者) 2年前
OverCookkkkk (楼主) 2年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!