我希望我的日志记录方法能够输出某种请求 ID。为此,我需要将请求对象(或某些派生对象)传递给日志记录函数。
从请求处理程序记录时这一切都很好,但在库样式方法中使用时会出现问题,因为我不希望这些方法知道任何正在进行的 http 请求。
此外,控制台应用程序将来可能会使用这些相同的库方法,并且 request-id 将被某种工作线程 id 替换。
使用上下文可以解决问题,但这意味着我必须向所有方法添加上下文参数,这有点烦人。
所以,基本上,我需要的是在方法和 goroutine 调用之间传递的某种静态存储。
我不确定 Go 中是否有类似的东西,所以也许我的方法完全没有根据,在这种情况下,我很高兴听到什么是解决上述问题的更好方法。
谢谢,
尝试另一个日志库。例如,在 log15 ( https://github.com/inconshreveable/log15 ) 中,Logger 作为嵌入式键/值上下文。
logger := log.New("request_id", "8379870928")
Run Code Online (Sandbox Code Playgroud)
您可以将记录器对象传递给任何需要记录的人。稍后的:
logger.Warn("blabalbla")
Run Code Online (Sandbox Code Playgroud)
...将嵌入您放置的 request_id 。
| 归档时间: |
|
| 查看次数: |
1942 次 |
| 最近记录: |