温馨提示×

如何清理Ubuntu Nodejs日志

小樊
45
2026-07-10 03:18:48
栏目: 编程语言

在 Ubuntu 上清理 Node.js 日志,通常取决于日志是写在哪里的。下面按常见场景给你一套完整、安全的做法。


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

1️⃣ Node.js 应用自身产生的日志

常见位置:

/var/log/myapp/
/home/user/app/logs/
./logs/

可查看进程启动时是否有类似:

fs.createWriteStream('logs/app.log')
winston / pino / log4js 配置路径

查看正在运行的 Node 进程:

ps aux | grep node

2️⃣ 系统 / systemd 管理的 Node 服务日志

如果是 systemd 启动的服务:

journalctl -u your-node-service-name

或查看:

/var/log/syslog
/var/log/messages

3️⃣ Nginx / PM2 代理的 Node 日志

  • PM2
~/.pm2/logs/
  • Nginx
/var/log/nginx/access.log
/var/log/nginx/error.log

二、清理 Node.js 日志(安全做法)

✅ 方法 1:清空日志文件(推荐)

不要直接删除正在写入的日志文件

# 清空日志内容,不删除文件
: > /path/to/app.log

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

✅ 优点:

  • 不影响正在运行的 Node 进程
  • 不丢失文件句柄

✅ 方法 2:删除旧日志(非当前写入)

rm -f /var/log/myapp/*.log.2025*

⚠ 注意:

  • 不要删除 Node 当前正在写入的 .log

✅ 方法 3:PM2 日志清理

pm2 flush        # 清空所有 PM2 日志
pm2 logs --lines 0

或手动清理:

rm -f ~/.pm2/logs/*

✅ 方法 4:systemd 日志清理

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

三、长期优化(强烈建议)

✅ 1️⃣ 使用日志轮转(logrotate)

Ubuntu 自带 logrotate

新建配置:

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

示例:

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

copytruncate 对 Node.js 非常友好

测试:

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

✅ 2️⃣ Node.js 日志库配置

使用 Winston / Pino 时:

  • 按日期切分
  • 限制大小
  • 自动删除旧日志

示例(Winston):

new winston.transports.File({
  filename: 'app.log',
  maxsize: 10485760, // 10MB
  maxFiles: 5
})

四、快速判断该清理哪个日志

场景 清理位置
自己写的 Node 应用 logs/*.log
PM2 ~/.pm2/logs/
systemd journalctl
Nginx /var/log/nginx/
Docker docker logs

五、一键清理示例(通用)

# 清空 PM2 日志
pm2 flush

# 清空自定义日志
: > /var/log/myapp/app.log

# 清理 7 天前日志
find /var/log/myapp -name "*.log" -mtime +7 -delete

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

  • ✅ Node 启动方式(PM2 / systemd / docker / 手动)
  • ✅ 日志路径或报错信息

我可以给你精确的清理命令,避免误删数据。

0