如何为 Fastify 中的每个请求添加跟踪 ID?

How to add tracking id for each request in fastify?

我使用 fastify 作为我应用程序的后端。我也在使用 pino 记录器。

const fastify = require('fastify')({
logger: true
})

我每次写作时都需要 fastify.log.info("something") 我需要查看带有一些 trackingId 的日志(在我的终端中)。喜欢{message: something, trackingId: 123}。跟踪 ID 在整个请求中应该是相同的。

我试图在 fastify logger docs and pino logger 中找到如何做到这一点,但没有成功。

此代码将产生以下输出。请注意,我使用的是 request.log(不是 fastify.log)。这样就自动打印出了fastify生成的request id。

const fastify = require('fastify')({
  logger: true,
  requestIdLogLabel: 'trackingId',
})

fastify.get('/', async (request, reply) => {
  request.log.info('Custom log message')
  return { hello: 'world' }
})
fastify.listen(8080)

输出:

{"level":30,"trackingId":"req-1","req":{"method":"GET","url":"/","hostname":"localhost:8080","remoteAddress":"127.0.0.1","remotePort":50743},"msg":"incoming request"}
{"level":30,"trackingId":"req-1","msg":"Custom log message"}
{"level":30,"trackingId":"req-1","res":{"statusCode":200},"responseTime":3.57566699385643,"msg":"request completed"}

req-id 是由 Fastify 生成的。您可以通过实现自己的 genReqId function.

来自定义其值