首页主机资讯Ubuntu Node.js日志清理技巧

Ubuntu Node.js日志清理技巧

时间2025-10-28 22:24:04发布访客分类主机资讯浏览571
导读:使用logrotate工具(系统级自动化管理) logrotate是Ubuntu系统自带的日志管理工具,可自动轮转、压缩、删除Node.js日志文件,无需修改应用代码。 安装logrotate:若未安装,通过终端执行sudo apt-ge...

使用logrotate工具(系统级自动化管理)
logrotate是Ubuntu系统自带的日志管理工具,可自动轮转、压缩、删除Node.js日志文件,无需修改应用代码。

  • 安装logrotate:若未安装,通过终端执行sudo apt-get install logrotate安装。
  • 创建配置文件:在/etc/logrotate.d/目录下新建Node.js专属配置文件(如nodejs-app),添加以下内容(根据实际路径调整):
    /path/to/your/nodejs/app/logs/*.log {
    
        daily                # 每天轮转一次
        rotate 7             # 保留最近7天的日志
        compress             # 压缩旧日志(节省空间)
        missingok            # 日志文件不存在时不报错
        notifempty           # 日志为空时不轮转
        create 0640 root adm # 新日志文件权限及所有者
    }
    
    
  • 手动触发测试:执行sudo logrotate -f /etc/logrotate.d/nodejs-app强制轮转,验证配置是否生效。
  • 自动化运行:logrotate默认通过/etc/cron.daily/logrotate每日自动执行,无需额外配置。

编写自定义Shell脚本(灵活定制清理逻辑)
通过Shell脚本可灵活定义清理规则(如按修改时间、文件大小),适合需要特殊清理逻辑的场景。

  • 基础脚本示例:创建clean-nodejs-logs.sh,内容如下:
    #!/bin/bash
    LOG_DIR="/path/to/your/nodejs/app/logs"
    MAX_DAYS=7  # 保留最近7天的日志
    find "$LOG_DIR" -type f -name "*.log" -mtime +$MAX_DAYS -exec rm -f {
    }
         \;
          # 删除超过MAX_DAYS天的.log文件
    
  • 赋予执行权限sudo chmod +x /usr/local/bin/clean-nodejs-logs.sh
  • 设置定时任务:通过crontab -e添加以下内容,实现每天凌晨1点自动清理:
    0 1 * * * /usr/local/bin/clean-nodejs-logs.sh
    

利用systemd定时任务(集成系统服务管理)
若Node.js应用通过systemd管理(如使用systemctl start node-app),可创建systemd定时任务实现日志清理。

  • 创建清理脚本:同自定义Shell脚本步骤,创建/usr/local/bin/clean-nodejs-logs.sh并赋予执行权限。
  • 创建systemd服务文件sudo nano /etc/systemd/system/clean-nodejs-logs.service,内容如下:
    [Unit]
    Description=Clean Node.js logs older than 7 days
    [Service]
    ExecStart=/usr/local/bin/clean-nodejs-logs.sh
    
  • 创建systemd定时器文件sudo nano /etc/systemd/system/clean-nodejs-logs.timer,内容如下:
    [Unit]
    Description=Run clean-nodejs-logs daily
    [Timer]
    OnCalendar=daily
    Persistent=true
    [Install]
    WantedBy=timers.target
    
  • 激活定时任务:执行sudo systemctl daemon-reloadsudo systemctl enable clean-nodejs-logs.timersudo systemctl start clean-nodejs-logs.timer,定时任务将随系统启动自动运行。

使用Node.js第三方日志库(应用层集成轮转)
通过第三方日志库(如winston-daily-rotate-file)在应用层实现日志轮转,适合需要与应用深度集成的场景(如按日志级别分开轮转)。

  • 安装库npm install winston-daily-rotate-file
  • 配置日志轮转:在应用代码中添加以下内容(以winston为例):
    const winston = require('winston');
        
    const DailyRotateFile = require('winston-daily-rotate-file');
    
    const logger = winston.createLogger({
    
        level: 'info',
        format: winston.format.json(),
        transports: [
            new DailyRotateFile({
    
                filename: '/path/to/your/nodejs/app/logs/app-%DATE%.log',  // 日志文件名格式
                datePattern: 'YYYY-MM-DD',  // 按天分割
                zippedArchive: true,        // 压缩旧日志
                maxSize: '20m',             // 单个日志文件最大20MB
                maxFiles: '14d'             // 保留最近14天的日志
            }
    )
        ]
    }
        );
        
    logger.info('This log will be rotated daily and compressed.');
    
    
    此配置会自动按天分割日志文件,压缩旧日志并保留14天,无需额外系统级配置。

手动清理临时日志(快速释放空间)
若需立即释放磁盘空间,可通过手动命令删除指定目录下的日志文件(谨慎使用,避免误删正在使用的日志)。

  • 进入日志目录cd /path/to/your/nodejs/app/logs
  • 删除所有.log文件rm -f *.log(强制删除所有.log文件)。
  • 删除超过30天的日志find . -type f -name "*.log" -mtime +30 -exec rm -f { } \; (删除30天前的.log文件)。
    手动清理后,建议后续配置自动清理策略,避免重复操作。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Ubuntu Node.js日志清理技巧
本文地址: https://pptw.com/jishu/737250.html
Node.js日志在Ubuntu上的故障排查 Node.js在Ubuntu上的日志备份方案

游客 回复需填写必要信息