ubuntu

Ubuntu JS日志轮转策略是什么

小樊
38
2025-08-23 03:35:08
栏目: 编程语言

Ubuntu系统下JS(Node.js)日志轮转主要通过logrotate工具实现,核心策略如下:

  1. 工具基础

    • Ubuntu默认预装logrotate,用于定时轮转、压缩、删除旧日志,避免磁盘占满。
    • 配置文件路径:/etc/logrotate.conf(全局默认规则)、/etc/logrotate.d/(自定义服务配置)。
  2. 关键配置参数

    • 轮转周期daily(每天)、weekly(每周)、monthly(每月),或按文件大小size 100M(超过100MB触发)。
    • 保留数量rotate 7(保留最近7个日志文件),超量自动删除。
    • 压缩与权限compress(启用gzip压缩)、create 0640 root root(新日志文件权限及属主)。
    • 条件控制missingok(文件丢失不报错)、notifempty(空文件不轮转)。
  3. 针对Node.js的典型配置

    • 假设日志路径为/var/log/myapp/*.log,配置示例:
      /var/log/myapp/*.log {
          daily
          rotate 14
          compress
          delaycompress
          missingok
          notifempty
          create 0640 root adm
          postrotate
              # 可选:重启应用或通知服务重新打开日志
              # /bin/kill -HUP $(cat /var/run/myapp.pid 2>/dev/null)
          endscript
      }
      
      该配置表示:每天轮转日志,保留14天,压缩旧文件,轮转后尝试重启应用以重新加载日志。
  4. 执行与管理

    • 自动运行:通过/etc/cron.daily/logrotate定时任务每日执行,无需手动干预。
    • 手动测试:使用sudo logrotate -vf /etc/logrotate.d/myapp验证配置是否正确。
  5. 其他工具补充

    • pm2:若使用pm2管理Node.js应用,可通过pm2-logrotate模块实现日志轮转,需在ecosystem.config.js中配置log_rotate参数。
    • rsyslog:系统级日志(如syslog)轮转也可通过rsyslog配置实现,但JS应用通常直接使用logrotate

参考来源

0
看了该问题的人还看了