温馨提示×

linux nodejs日志怎么清理

小樊
50
2026-09-29 17:38:53
栏目: 编程语言

在 Linux 上清理 Node.js 日志,常见做法分 临时清理 和 长期管理 两类。下面按场景给你讲清楚。


一、临时清理(手动)

1. 直接删除日志文件

rm -f /path/to/node.log

⚠️ 注意:

  • 如果 Node 进程正在写这个文件,直接 rm 后磁盘空间可能不会立即释放
  • 正确做法:先清空,不删文件

2. 清空日志(推荐)

> /path/to/node.log

或

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

这样进程还能继续写,不会出问题。


二、Node.js 自带日志轮转(推荐)

1. 使用 winston + winston-daily-rotate-file

const transport = new DailyRotateFile({
  filename: 'logs/app-%DATE%.log',
  datePattern: 'YYYY-MM-DD',
  maxFiles: '14d', // 保留14天
  maxSize: '20m'
});

2. PM2 用户(最常见)

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

然后清理:

pm2 flush   # 清空所有日志

三、系统级日志管理(Linux 通用)

使用 logrotate(最稳妥)

示例 /etc/logrotate.d/nodejs:

/var/log/nodejs/*.log {
  daily
  rotate 7
  compress
  missingok
  notifempty
  copytruncate
}

生效测试:

logrotate -d /etc/logrotate.d/nodejs

✅ copytruncate 对 Node 很友好(不重启进程)


四、Docker 中的 Node 日志

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

清理:

docker system prune

五、常见坑总结

问题 解决
删了文件磁盘没释放 > file 或 `lsof
日志无限增长 上 logrotate
PM2 日志爆炸 pm2-logrotate
Docker 占满磁盘 设 log-size

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

  • 你是用 PM2 / Docker / 裸 Node
  • 日志路径
  • 是否允许重启服务

我可以给你一套 直接可用的配置。

0 踩