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