温馨提示×

linux怎么清理nodejs日志

小樊
32
2026-09-20 20:50:27
栏目: 编程语言

在 Linux 上清理 Node.js 日志,通常取决于日志是写在哪里的用什么方式生成的。下面按常见情况说明:


一、先确认日志位置

常见位置:

  • 项目目录内
    • logs/
    • *.log
  • 系统日志
    • /var/log/
  • 使用 PM2
    • ~/.pm2/logs/
  • 使用 Docker
    • docker logs

可先查找:

find / -name "*.log" 2>/dev/null | grep -i node

二、手动清理日志(最常用)

1. 删除日志文件

rm -f /path/to/node/*.log

示例(PM2):

rm -rf ~/.pm2/logs/*

2. 清空日志但保留文件(推荐)

避免程序因文件被删而报错:

> /path/to/app.log

或:

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

三、使用日志轮转(推荐长期方案)

1. 使用 logrotate(系统级)

编辑配置:

sudo vim /etc/logrotate.d/nodejs

示例:

/var/www/nodeapp/logs/*.log {
    daily
    rotate 7
    compress
    missingok
    notifempty
    copytruncate
}

测试:

sudo logrotate -d /etc/logrotate.d/nodejs

四、PM2 清理日志

查看日志

pm2 logs

清空日志

pm2 flush

五、Node.js 代码层建议

使用日志库并配置大小限制,例如:

  • winston
  • pino

示例(winston + 文件轮转):

const { createLogger, transports } = require('winston');
require('winston-daily-rotate-file');

createLogger({
  transports: [
    new transports.DailyRotateFile({
      filename: 'logs/app-%DATE%.log',
      maxSize: '10m',
      maxFiles: '14d'
    })
  ]
});

六、Docker 中的 Node 日志

docker logs --tail 100 <容器名>

清理:

docker system prune

或限制日志大小(daemon.json):

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

七、总结建议

  • ✅ 临时清理:> file.log
  • ✅ 长期方案:logrotate
  • ✅ PM2:pm2 flush
  • ❌ 不建议直接 rm 正在写入的日志

如果你能告诉我:

  • 用什么启动 Node(pm2 / docker / systemd / 直接 node)
  • 日志写在哪

我可以给你更精确的命令

0