gpt4 book ai didi

logging - Go - 包装记录器以便在请求的每条消息中添加特定信息

转载 作者:IT王子 更新时间:2023-10-29 01:28:02 27 4
gpt4 key购买 nike

我正在做一个 http api 的项目,我想实现一件事,但我还没有找到实现它的方法。所以,在我的例子中,我在一个请求中发送了一个事务 ID,我想做的就是获取这个事务 ID 并在记录器中使用它,将这个信息添加到当前请求的每个日志条目中。我想这样做是为了在发生某些问题时检索信息时更好地过滤我的日志。

例如我的交易 ID 是 foo :
应用程序接口(interface) | [ Gin ] 2016/08/19 - 13:00:37 | 201 | 30.791855 毫秒 | 192.168.99.1:63922 | POST/v1/我的/端点
应用程序接口(interface) | time="2016-08-19T13:00:39Z"level=info msg="经过身份验证的 API 用户:测试"transactionId="foo"
应用程序接口(interface) | time="2016-08-19T13:00:39Z"level=debug msg="SQL query"args=25 query="SELECT id, created, information1, information2 FROM mydb.mytable WHERE id = ?; "transactionId="foo “
这是我希望在我的日志中包含的信息。

所以我想知道是否有一种方法可以将记录器用作单例并在每次调用记录器时添加信息,而不是在每次日志调用中注入(inject)事务 ID。

我希望我在这个问题上提供了足够的细节。

谢谢。

最佳答案

在记录器中添加您的事务 ID 前缀。标准的 go logger 提供了许多方法来做到这一点。一个例子是 log.New() 方法。

func GetLogger(transactionID string) *log.Logger {
return log.New(os.Stdout, fmt.Sprintf("[transactionId = %s ] ", transactionID),
log.Lshortfile)
}

GetLogger 将为您提供一个记录器,该记录器将在每个日志中添加您的 transactionID 前缀。

关于logging - Go - 包装记录器以便在请求的每条消息中添加特定信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39043108/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com