用途:为 Node.js 应用提供生产级结构化日志实践,核心理念是“日志是数据而非文本”,每条日志都是可查询的数据点,便于分析、告警与排障。
主要能力:推荐使用 Pino,理由是比 Winston 快约 5 倍、默认异步、低延迟、支持子日志器与内置脱敏。支持六个日志级别(trace/debug/info/warn/error/fatal),生产建议默认 LOG_LEVEL=info。支持通过 child logger 传播上下文,通过 correlationId 跨服务追踪请求,通过 redact 配置自动将 password、token、apiKey、authorization、cookie 等字段替换为 [REDACTED]。
使用方式:安装 pnpm add pino,开发环境加 pnpm add -D pino-pretty。在 lib/logger.ts 创建 logger 单例,配置 level、transport(开发用 pino-pretty,生产用 JSON)、base 上下文、ISO 时间戳与 redact 路径。用 logger.child({...}) 创建带上下文的子日志器,在中间件中生成或透传 x-correlation-id。日志字段用结构化对象而非字符串模板,错误日志传入完整 error 对象以保留堆栈。生产可接入 Datadog、Graylog 或 Vercel Log Drains 集中化。
适用场景:Node.js/Next.js 后端服务、API 路由、数据库查询性能记录、多服务请求追踪、安全审计与日志查询分析。
限制:资料未提供具体价格与授权信息;性能对比数据来自资料所述基准,实际表现可能因环境而异;Convex 环境使用内置 console 结构化输出,不直接使用 Pino。