温馨提示×

linux中nodejs日志咋清理

小樊
38
2026-09-02 12:50:25
栏目: 编程语言

在 Linux 里清理 Node.js 日志,常见做法分几种情况,下面按实际使用场景给你说明:


一、Node.js 自己打印的日志文件(最常见)

如果你是这样写的:

console.log(...)

并且通过重定向或日志库写到了文件,比如:

node app.js > app.log 2>&1

✅ 安全清理方式(推荐)

> app.log

truncate -s 0 app.log

⚠️ 不要直接 rm app.log
否则 Node.js 还在占用文件句柄,日志还会继续写“已删除的文件”,磁盘不释放。


二、使用日志库(winston / pino / log4js)

1️⃣ 配置日志轮转(最推荐)

winston + winston-daily-rotate-file 为例:

new DailyRotateFile({
  filename: 'logs/app-%DATE%.log',
  datePattern: 'YYYY-MM-DD',
  maxFiles: '14d'
})

自动保留 14 天,不用手动清。


三、系统级日志(PM2 / systemd)

✅ PM2

pm2 flush

清空所有 PM2 日志。

或单独清:

pm2 flush app

PM2 日志位置:

~/.pm2/logs/

✅ systemd(node 作为服务)

journalctl -u yourapp.service --vacuum-time=7d

或清空:

journalctl --rotate
journalctl --vacuum-size=100M

四、定时自动清理(Linux cron)

例如每周清理 7 天前的日志:

0 3 * * 0 find /var/log/node -name "*.log" -mtime +7 -delete

五、快速判断日志在哪

lsof | grep node | grep log

ps aux | grep node

总结(最实用)

场景 做法
手动清 > logfile
PM2 pm2 flush
长期方案 日志轮转
千万别 直接 rm 正在写的日志

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

  • 用的是什么启动方式(node / pm2 / docker)
  • 日志写在哪

我可以给你精确命令

0