温馨提示×

linux下nodejs日志怎么清理

小樊
39
2026-09-11 12:07:50
栏目: 编程语言

在 Linux 下清理 Node.js 日志,常见做法分为手动清理自动轮转(推荐)代码层控制三类。下面按场景说明。


一、手动清理(临时用)

1. 直接删除日志文件

rm -f /path/to/node.log

⚠️ 注意:
如果 Node 进程是用 fs.appendFilewinston一直持有文件句柄,直接 rm磁盘空间不会释放,需要重启进程或让程序重新打开文件。

2. 清空日志而不删除文件

> /path/to/node.log
# 或
truncate -s 0 /path/to/node.log

✅ 推荐:不会断句柄,进程可继续写。


二、日志轮转(最推荐)

方案 1:logrotate(系统级,最常用)

编辑配置:

sudo vim /etc/logrotate.d/nodejs

示例:

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

说明:

  • copytruncate:先复制再清空,不重启 Node 进程
  • rotate 7:保留 7 份
  • compress:压缩旧日志

测试:

logrotate -d /etc/logrotate.d/nodejs

方案 2:Node 自身日志库(代码层)

Winston + winston-daily-rotate-file

const transport = new (require('winston-daily-rotate-file'))({
  filename: 'logs/app-%DATE%.log',
  datePattern: 'YYYY-MM-DD',
  maxFiles: '14d',
  maxSize: '20m'
});

✅ 自动按天/大小切割,无需手动清


方案 3:PM2 日志管理

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

三、防止日志爆盘的最佳实践

  • ✅ 不用 console.log 打生产日志
  • ✅ 设置日志级别(error / warn / info)
  • ✅ 开启日志轮转
  • ✅ 磁盘监控(df -h)

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

  • 日志是怎么生成的(console / winston / pm2 / docker)
  • 日志路径
  • 是否在生产环境

我可以给你精准配置

0