在Go中有静态的方法来获取当前请求/上下文吗?

vq8itlhq  于 2023-10-14  发布在  Go
关注(0)|答案(1)|浏览(164)

我希望我的日志记录方法输出某种类型的请求ID。要做到这一点,我需要传递一个请求对象(或一些派生对象)给日志函数。
当从请求处理程序中进行日志记录时,这一切都很好,但是当从库风格的方法中使用时就有问题了,因为我不希望这些方法知道任何正在进行的http请求。
此外,这些相同的库方法将来可能会被控制台应用程序使用,然后request-id将被某种worker-thread-id替换。
使用上下文解决了这个问题,但这意味着我必须为所有方法添加一个上下文参数,这有点烦人。
所以,基本上,我需要的是在方法和goroutine调用之间传递的某种静态存储。
我不确定Go中是否有类似的东西,所以也许我的方法完全是错误的,在这种情况下,我很乐意听到解决上述问题的更好方法。
谢谢你,

uttx8gqw

uttx8gqw1#

尝试另一个日志库。例如,在log 15(https://github.com/inconshreveable/log15)中,Logger作为嵌入的键/值上下文。

  1. logger := log.New("request_id", "8379870928")

您可以将logger对象传递给任何需要记录日志的人。稍后:

  1. logger.Warn("blabalbla")

...将嵌入您已放置的request_id。

相关问题