Boas Práticas de Logging
Registre campos acionáveis; amostre o debug em produção com moderação. Estas regras mantêm os logs do Node.js pesquisáveis, em conformidade e baratos em escala.
Busque em todas as páginas da documentação
Registre campos acionáveis; amostre o debug em produção com moderação. Estas regras mantêm os logs do Node.js pesquisáveis, em conformidade e baratos em escala.
requestId, tenantId) entre microsserviços em um documento compartilhado.event ou action estável para logs de negócios. order_created, não um done vago.info para ciclo de vida de requisição e eventos de negócios. error para falhas que necessitam de ação.debug desativado ou amostrado em produção. LOG_LEVEL=info como padrão; amostragem de cauda para investigações.console.log em src/ via ESLint. Exceção apenas para pontos de entrada de CLI.x-request-id na borda. Retorne o mesmo ID no cabeçalho de resposta.requestId em cada linha. Sem passagem manual em camadas profundas sem ALS.x-request-id em requisições HTTP de saída e jobs de fila. Correlação de ponta a ponta./health ou registre em debug.userId/tenantId após a autenticação em um logger filho. Não antes que a autenticação seja bem-sucedida.redact do Pino para autorização, cookies, senhas, PAN. Veja pino.req e user. Registre IDs, não e-mails.req.body completo ou error.response.data do Axios por padrão.pino-pretty em produção. Apenas JSON; o transporte "pretty" bloqueia o event loop.base: { service, version }. Metadados de frota pesquisáveis.trace_id com OpenTelemetry quando ativado. Correlacione logs e traces no APM.fatal para chamadas de página; error para tickets; warn para dashboard.LOGGING.md para novos serviços.Mínimo: level, time, msg, service, requestId (HTTP), event ou chave de ação equivalente.
Objeto err completo nos logs; mensagem genérica na resposta HTTP. Nunca o inverso.
Envolva o Pino para novo código; migre os caminhos "quentes" primeiro. Fastify/NestJS favorecem Pino nativamente.
Não em k8s - apenas stdout. A plataforma coleta e indexa.
Pino é barato em relação ao trabalho HTTP. A explosão de custos vem da verbosidade do debug e payloads enormes.
Amostre debug em 1-5% em produção, se necessário. Nunca amostre erros ou eventos de pagamento.
Sempre inclua tenantId no logger filho após a resolução do tenant. Crítico para consultas de suporte.
Stream separado ou campo audit: true com retenção mais longa e RBAC de acesso mais rigoroso.
Versões da Stack: Esta página foi escrita para Node.js 24.18.0 (LTS Ativo), npm 10+, TypeScript 5.6+, Express 5, Fastify 5 e NestJS 11.
Revisado por Chris St. John·Última atualização: 16 de jul. de 2026