温馨提示×

怎么清理Ubuntu Nodejs日志

小樊
53
2026-07-10 05:25:50
栏目: 编程语言

在 Ubuntu 上清理 Node.js 日志,取决于日志存在哪里、用什么方式运行的 Node.js。下面按常见场景给你一套完整做法(从简单到规范)。


一、确认 Node.js 日志在哪里

1️⃣ 常见日志位置

  • 应用自己写的日志(最常见)
    /var/log/your-app/
    ~/your-app/logs/
    
  • PM2 日志
    ~/.pm2/logs/
    
  • systemd 服务日志
    journalctl
    
  • Nginx 反向代理日志
    /var/log/nginx/
    

二、手动清理 Node.js 日志(最直接)

1️⃣ 删除旧日志文件

sudo rm -f /var/log/your-app/*.log

⚠️ 注意:如果 Node.js 进程正在写入该文件,直接 rm 可能导致:

  • 文件被删但磁盘空间不释放
  • 需要重启进程

2️⃣ 正确做法:清空日志文件(推荐 ✅)

sudo truncate -s 0 /var/log/your-app/app.log

sudo echo > /var/log/your-app/app.log

✅ 优点:

  • 不中断进程
  • 立即释放磁盘空间

三、PM2 运行的 Node.js(最常见)

1️⃣ 查看日志

pm2 logs

2️⃣ 清空 PM2 日志

pm2 flush

或手动清空:

truncate -s 0 ~/.pm2/logs/*.log

3️⃣ PM2 自动日志轮转(强烈推荐 ✅)

pm2 install pm2-logrotate

然后配置:

pm2 set pm2-logrotate:max_size 10M
pm2 set pm2-logrotate:retain 7

四、systemd 管理的 Node.js 服务

1️⃣ 查看日志

journalctl -u your-node-service -f

2️⃣ 清理 systemd 日志

sudo journalctl --vacuum-time=7d

或限制大小:

sudo journalctl --vacuum-size=500M

五、自动清理旧日志(生产环境推荐 ✅)

1️⃣ 使用 logrotate(标准做法)

创建配置:

sudo nano /etc/logrotate.d/node-app

示例:

/var/log/your-app/*.log {
    daily
    rotate 7
    compress
    missingok
    notifempty
    copytruncate
}

说明:

  • copytruncate:不重启进程
  • rotate 7:保留 7 天
  • compress:自动压缩

测试:

sudo logrotate -d /etc/logrotate.d/node-app

六、Node.js 代码层建议(治本)

✅ 不要一直写同一个 log 文件

推荐:

  • winston
  • pino

示例(winston):

new winston.transports.File({
  filename: 'app.log',
  maxsize: 10485760, // 10MB
  maxFiles: 5
})

七、快速排查磁盘被日志占满

df -h
du -sh /var/log/*

找出大文件:

find /var/log -type f -size +100M

八、总结(推荐方案)

场景 推荐做法
临时清理 truncate -s 0
PM2 pm2 flush + pm2-logrotate
systemd journalctl --vacuum
生产环境 logrotate
新项目 winston / pino

如果你愿意,可以告诉我:

  • Node.js 是 PM2 / systemd / docker / 直接运行
  • 日志路径在哪?
  • Ubuntu 版本?

我可以给你精确命令,一步到位 ✅

0