温馨提示×

Ubuntu Node.js日志配置技巧

小樊
51
2025-09-14 04:48:32
栏目: 编程语言

以下是Ubuntu下Node.js日志配置的核心技巧,涵盖库选择、级别控制、轮转管理及工具集成:

一、选择高效日志库

  • Winston:支持多传输(文件、控制台、远程)、格式化灵活,适合复杂场景。
  • Pino:高性能,JSON格式输出,适合对速度要求高的应用。
  • Bunyan:结构化日志,内置JSON格式,便于分析。

二、配置日志级别

  • 环境变量控制:通过process.env.LOG_LEVEL动态设置,如process.env.LOG_LEVEL='debug'
  • 代码中直接设置:在日志库初始化时指定,如winston.createLogger({ level: 'info' })

三、实现日志轮转

  • Winston-daily-rotate-file:按日期分割日志,支持压缩和保留天数配置。
    const DailyRotateFile = require('winston-daily-rotate-file');
    const logger = winston.createLogger({
      transports: [
        new DailyRotateFile({
          filename: 'logs/app-%DATE%.log',
          datePattern: 'YYYY-MM-DD',
          maxSize: '20m',
          maxFiles: '14d'
        })
      ]
    });
    
  • 系统级工具:使用logrotate配置全局日志轮转策略。

四、集中式日志管理

  • ELK Stack:通过Logstash收集日志,Elasticsearch存储,Kibana可视化分析。
  • Fluentd:轻量级日志收集器,支持多种输出目标。

五、性能优化技巧

  • 异步日志:使用异步传输避免阻塞主线程,如Winston的Async传输。
  • 结构化日志:以JSON格式输出,便于后续处理和分析。

六、安全与权限管理

  • 敏感信息脱敏:在日志记录前对密码、token等敏感字段进行过滤。
  • 文件权限控制:通过chmod设置日志文件权限,如chmod 640 error.log

七、常用工具集成

  • PM2:管理进程的同时支持日志分割和实时查看,命令如pm2 logs
  • Docker:通过docker logs命令查看容器内应用日志。

0