温馨提示×

Debian下Nodejs日志如何清理

小樊
37
2026-08-11 22:55:53
栏目: 编程语言

在 Debian 系统下,Node.js 的日志清理方式取决于日志的存储位置和方式。下面按常见场景给你一套完整、可操作的方案。


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

1️⃣ 常见日志位置

  • 应用自己写的日志文件
    /var/log/myapp/
    /home/user/app/logs/
    
  • 使用 PM2 管理 Node.js
    ~/.pm2/logs/
    
  • systemd 管理的 Node.js 服务
    journalctl
    
  • Docker 容器中的 Node.js
    docker logs
    

二、手动清理 Node.js 日志

1️⃣ 直接删除日志文件(不推荐)

rm -f /path/to/app.log

⚠️ 如果 Node.js 仍在写入该文件,可能出现:

  • 磁盘空间不释放
  • 日志写入异常

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

> /path/to/app.log

truncate -s 0 /path/to/app.log

✅ 不会中断 Node.js 进程
✅ 立即释放磁盘空间


三、PM2 日志清理(最常见)

1️⃣ 查看 PM2 日志

pm2 logs
pm2 logs --lines 50

2️⃣ 清空 PM2 日志

pm2 flush

3️⃣ 限制 PM2 日志大小(强烈建议)

pm2 install pm2-logrotate

配置示例:

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

✅ 自动轮转、压缩、清理


四、systemd 日志清理(Node 作为系统服务)

1️⃣ 查看日志

journalctl -u node-app.service

2️⃣ 清理 systemd 日志

sudo journalctl --vacuum-time=7d
sudo journalctl --vacuum-size=500M

3️⃣ 限制 systemd 日志大小(永久)

编辑:

sudo vim /etc/systemd/journald.conf
SystemMaxUse=500M
MaxRetentionSec=7day

然后:

sudo systemctl restart systemd-journald

五、自动清理 Node.js 日志(生产推荐)

✅ 使用 logrotate(最标准)

1️⃣ 创建配置

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

2️⃣ 示例配置

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

copytruncate 对 Node.js 非常友好
✅ 无需重启服务


六、Docker 中 Node.js 日志清理

1️⃣ 查看 Docker 日志

docker logs <container_id>

2️⃣ 限制 Docker 日志大小

{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "50m",
    "max-file": "3"
  }
}

然后重启 Docker。


七、Node.js 代码层面建议(避免日志爆炸)

  • 使用日志库(Winston / Pino)
  • 配置日志级别
  • 禁止 console.log 直接输出到文件

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

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

查找大日志:

find / -type f -name "*.log" -size +100M

总结(推荐方案)

场景 推荐方式
PM2 pm2 flush + pm2-logrotate
系统服务 journalctl --vacuum
文件日志 logrotate
Docker Docker log-opt
临时清理 > app.log

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

  • 你是用 PM2 / systemd / Docker 哪种方式运行 Node.js?
  • 日志路径在哪里?

我可以给你完全定制化的清理方案

0