使用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. 您期望得到的结果?#
并发请求,区分开打印的日志属于哪个请求
推荐文章: