【发布时间】:2018-05-15 00:38:35
【问题描述】:
我目前在我的一个项目中使用 Express 4 和 Node 8。我希望能够记录应用程序中发生的某些事情,并使用会话 ID 作为将日志链链接在一起的方式。我正在使用 winston 进行日志记录。
问题:如何从应用中的任何位置访问此会话 ID,以便将其包含在日志中?
我知道您不能只将会话 ID 设置为全局变量,因为传入的后续请求将覆盖任何设置。
此外,我知道可以将会话 id 从路由层向下传递给所有其他需要它的函数,但是当最深层次的函数需要会话 id 仅用于日志记录时,这可能会相当麻烦。
对于多线程应用程序,每个线程都可以拥有自己的内存池,这样它就可以安全地在全局范围内存放一个日志记录关联 ID,而不会受到其他请求的干扰。但是,由于 Node 是单线程的,这似乎是不可能的,除非我遗漏了什么。
有没有办法拥有一个特定于请求的全局池,或者是否有更好的方法可以在每个日志语句中包含一个关联 ID?
【问题讨论】: