ubuntu

Ubuntu上Node.js日志管理技巧

小樊
53
2025-08-21 21:37:24
栏目: 编程语言

以下是Ubuntu上Node.js日志管理的实用技巧:

  1. 选择日志库

    • 使用winstonpino等库,支持日志分级、格式化及轮转,如winston-daily-rotate-file插件可按日期切割日志。
    • 示例(winston配置):
      const winston = require('winston');
      const logger = winston.createLogger({
        transports: [
          new winston.transports.File({ filename: 'error.log', level: 'error' }),
          new winston.transports.Console({ format: winston.format.simple() })
        ]
      });
      
  2. 日志轮转与清理

    • 工具法:用logrotate配置自动切割、压缩旧日志,保留7-30天记录,避免磁盘占满。
      • 配置示例(/etc/logrotate.d/nodejs):
        /var/log/nodejs/*.log {
          daily
          rotate 7
          compress
          missingok
          create 0640 root adm
        }
        
    • 库内置法:通过winston-daily-rotate-filepm2内置轮转功能,按文件大小或时间切割。
  3. 集中化日志管理

    • 部署ELK Stack(Elasticsearch+Logstash+Kibana)或Graylog,实现日志的集中存储、分析与可视化。
  4. 性能优化

    • 生产环境使用异步日志记录(如winston的异步传输),避免阻塞主线程。
    • 敏感信息脱敏,通过日志库过滤或替换敏感字段。
  5. 进程管理辅助

    • pm2管理应用时,启用内置日志轮转并配置保留策略:
      pm2 set pm2-logrotate:max_size 10M  # 单个文件最大10MB
      pm2 set pm2-logrotate:retain 7     # 保留7个文件
      
  6. 日志级别控制

    • 根据环境(开发/生产)动态调整日志级别,生产环境建议设为warnerror,减少冗余日志。

工具推荐:优先使用logrotate(系统级)或pm2(进程级)管理日志轮转,搭配winston/pino实现结构化日志记录。

0
看了该问题的人还看了