ubuntu

Ubuntu JS日志记录最佳实践

小樊
40
2025-08-23 03:32:09
栏目: 编程语言

以下是Ubuntu下JavaScript(Node.js)日志记录的最佳实践:

  1. 选择高效日志库

    • Winston:支持多传输(文件、控制台等)、灵活配置日志级别和格式,适合复杂场景。
    • Pino:高性能,低开销,适合高并发应用,支持JSON格式和异步日志。
    • Bunyan:默认JSON格式输出,便于结构化分析,适合日志聚合场景。
  2. 合理配置日志级别

    • 开发环境用debug/verbose,生产环境用info/warn/error,通过环境变量动态切换。
    • 示例:const logger = winston.createLogger({ level: process.env.NODE_ENV === 'production' ? 'info' : 'debug' })
  3. 结构化日志与元数据

    • 采用JSON格式记录日志,包含时间戳、请求ID、用户ID等上下文信息,便于分析。
    • 示例:logger.info({ event: 'user_login', userId: 123, timestamp: new Date().toISOString() })
  4. 日志轮转与归档

    • 使用winston-daily-rotate-file等插件按日期或大小分割日志,避免单文件过大。
    • 配置压缩和过期删除,如maxSize: '10m', maxFiles: '7d'
  5. 集中式日志管理

    • 部署ELK Stack(Elasticsearch+Logstash+Kibana)或Graylog,实现日志的集中存储、搜索和可视化。
    • 通过PM2或Logstash Agent实时传输日志至中央服务器。
  6. 性能优化

    • 选择异步日志库(如Pino),减少对主线程阻塞。
    • 批量写入日志,降低I/O频率。
  7. 安全与合规

    • 对敏感信息(如密码、token)脱敏处理,避免明文记录。
    • 限制日志文件访问权限,确保仅授权人员可查看。
  8. 监控与告警

    • 通过Prometheus+Grafana监控日志指标(如错误率、日志量),设置异常告警。
    • 利用ELK Stack的Kibana警报功能监控关键事件。

参考来源

0
看了该问题的人还看了