我正在开发Go语言,echo框架。
我正在设计一个记录器,我想将相应的线程ID记录到日志中,但我不知道一个好的方法。
例如,如果多次访问同时执行登录处理,则一方成功,另一方面失败 通过查看失败的日志无法确定。
经过检查,在Go语言中goroutine的id存在,但我不应该得到它, 最初有人说goroutine在同一个帖子中并不相同。
如何识别线程? 或者是否有一个包将它们放在日志中?
如果我使用错误的表达方式,我很抱歉,因为英语不是我的母语。 感谢。
答案 0 :(得分:2)
对于go例程,GoLang中没有等效的线程ID。
你可以做的是创建一个context并附加一个唯一的id(最好是请求id)。让所有的函数都接受一个上下文。让记录器库获取上下文并打印唯一ID。通过以这种方式使用上下文,您甚至可以共享日志信息
答案 1 :(得分:0)
我个人更喜欢go Log4J in Go中的log4j。
它非常易于使用,并且它具有基于时间和大小的文件轮换等所有功能。此外,您可以存储包含文件名和行号的完整错误堆栈。