温馨提示×

Ubuntu Nodejs日志如何清理

小樊
45
2026-08-05 09:46:49
栏目: 编程语言

在 Ubuntu 上清理 Node.js 日志,要分几种常见场景。下面按最常见 → 最推荐的方式给你说明,并给出可直接用的命令。


一、Node.js 日志常见位置

1️⃣ 应用自己写的日志

常见路径:

/var/log/myapp/
/home/ubuntu/app/logs/
./logs/

常见文件名:

app.log
error.log
combined.log

二、手动清理(不推荐长期使用)

✅ 删除旧日志

rm -f /var/log/myapp/*.log

✅ 清空日志文件(不删除文件)

truncate -s 0 /var/log/myapp/app.log

✅ 适合临时救急
❌ 不适合生产环境


三、使用 logrotate(✅ 强烈推荐)

这是 Ubuntu 官方推荐方式

1️⃣ 安装 logrotate(一般已安装)

which logrotate

2️⃣ 为 Node.js 应用创建配置

sudo nano /etc/logrotate.d/myapp

示例配置(✅ 直接用):

/var/log/myapp/*.log {
    daily
    rotate 7
    compress
    delaycompress
    missingok
    notifempty
    create 0644 ubuntu ubuntu
    postrotate
        systemctl reload myapp > /dev/null 2>&1 || true
    endscript
}

含义说明:

参数 说明
daily 每天轮转
rotate 7 保留 7 天
compress gzip 压缩
missingok 文件不存在也不报错
notifempty 空文件不轮转
postrotate 重启/重载应用

3️⃣ 测试配置

sudo logrotate -d /etc/logrotate.d/myapp

正式执行:

sudo logrotate /etc/logrotate.d/myapp

四、使用 PM2(✅ Node.js 最常见)

1️⃣ PM2 自带日志

~/.pm2/logs/

2️⃣ 清理 PM2 日志

pm2 flush

3️⃣ 限制 PM2 日志大小(推荐)

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

五、Docker / Kubernetes 场景

Docker

docker system prune
docker logs --tail 100 <container_id>

Kubernetes

kubectl logs <pod> --tail=100

日志由 容器运行时自动清理


六、推荐最佳实践 ✅

不要手动 rm 日志
使用 logrotate 或 pm2-logrotate
日志按日期切割
定期压缩 + 定期删除


七、快速选择方案

场景 推荐方式
普通 Node 应用 logrotate
PM2 pm2-logrotate
Docker 容器日志策略
临时清理 truncate / flush

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

  • ✅ 用没用 PM2 / Docker
  • ✅ 日志路径
  • ✅ Ubuntu 版本

我可以帮你写一套 完全可直接用的配置

0