记录实践
#node #logging

这篇文章涵盖了后端(Node.js)应用程序的一些记录实践。

  • 避免将唯一标识符(例如,用户ID)放入消息中。唯一的ID将产生许多具有相同上下文的不同消息。将其用作消息参数。

  • 为消息使用适当的日志级别。有多个日志级别

    • 信息 - 应用程序行为,不要记录每个步骤
    • 错误 - 应用程序处理失败,需要修复的东西
    • 调试 - 故障排除所需的其他日志
    • 警告 - 发生了意外的事情(例如,第三方API失败)
    • 致命 - 应用程序崩溃,需要尽快修复

不要在生产上使用调试日志。将日志级别作为环境变量。

  • 流登录到JSON格式的标准输出,因此记录聚合器(例如,灰色,)可以收集并充分解析它们

  • 避免记录任何凭据,例如密码,验证令牌等。

  • 使用像pino的可配置记录器

const pino = require('pino');
const logger = pino({
  level: process.env.LOG_LEVEL || 'info',
  redact: {
    paths: ['token'],
    remove: true,
  },
});

logger.info({ someId: 'id' }, 'Started the app...');
logger.debug({ data: 'some data useful for debugging' }, 'Sending the request...');