使用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. 您期望得到的结果?
并发请求,区分开打印的日志属于哪个请求
分享创造:使用协程id调试和跟踪你的接口(非侵入式)
调试神器-Telescope