SuperAPI AI 工具集

pino-logging

部署与运维

查看项目

更新于 10-16 09:47

技能介绍

用途:面向 Node.js 应用的结构化日志记录,支持请求级上下文(关联 ID)、敏感数据脱敏、多目标日志路由以及框架日志集成。不适合仅浏览器端日志、开发期简单 console.log 调试,或默认就需要人类可读日志的项目(Pino 输出 JSON,开发时可配合 pino-pretty)。

主要能力:默认级别 info,JSON 输出到 stdout;级别顺序为 fatal > error > warn > info > debug > trace。可用 pino({ level: 'debug' }) 设置级别,用 logger.info({ userId }, 'msg') 传入合并对象,用 logger.error({ err }, 'failed') 记录错误以便序列化,用 logger.child({ requestId }) 生成子日志器。通过 redact 配置点号路径(支持通配符)脱敏,transport 在 worker 线程中非阻塞运行,targets 可配置多目标与各自级别。内置 pino/file 文件传输(支持 mkdir),pino-roll 支持按大小和时间轮转;pino-http 提供 HTTP 中间件与 genReqId,serializers 和 formatters 可转换对象与字段,customLevels 可新增自定义级别,pino.destination({ sync: false }) 提供异步写入。Fastify 内置 Pino,Hono 可用 hono-pino 中间件。

使用限制与常见错误:生产环境不要使用 pino-pretty,应保留 JSON 输出;避免记录令牌、密码等敏感数据,使用 redact;不要每请求新建日志器,改用 child;使用 pino.transport() 避免主线程被文件写入阻塞;错误应作为 { err } 传入而非 JSON.stringify;用 genReqId 转发 X-Request-Id;热循环中先用 logger.isLevelEnabled('debug') 判断;transport 为独立包,需作为依赖安装。若已有 Hono、vitest-testing 或 sentry-setup-logging 技能,可分别委派中间件、测试与 Sentry 集成(Sentry.pinoIntegration()),否则可执行 pnpm dlx skills add getsentry/sentry-for-claude -s sentry-setup-logging -a claude-code -y。版本为 pino v10+。更多细节暂未提供。