温馨提示×

linux js日志过大如何处理

小樊
45
2026-10-11 10:08:00
栏目: 编程语言

在 Linux 环境下,JS 日志过大(如 Node.js 服务日志、前端构建日志、PM2 日志等)是常见问题。可以从排查原因 → 清理方式 → 长期治理三个层面处理。


一、先确认日志位置和大小

1. 查找大日志文件

du -sh /var/log/*
du -sh ~/logs/*
find / -name "*.log" -size +100M

常见 JS 日志位置:

  • Node 服务:logs/、/var/log/
  • PM2:~/.pm2/logs/
  • Docker:docker logs
  • Nginx(反向代理):/var/log/nginx/

二、临时处理(立即释放空间)

1. 清空日志(不删文件)

> app.log
# 或
: > app.log

⚠️ 不要直接 rm,可能导致进程仍占用磁盘空间

2. 正在运行的 Node / PM2

pm2 flush

3. Docker 日志过大

# 查看
docker ps --size

# 清理
truncate -s 0 /var/lib/docker/containers/*/*-json.log

三、长期治理方案(重点)

✅ 1. 使用日志轮转(强烈推荐)

logrotate(系统级)

vim /etc/logrotate.d/nodejs

示例:

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

应用:

logrotate -f /etc/logrotate.d/nodejs

✅ 2. Node.js 使用成熟日志库

不要 console.log 写文件

推荐:

  • winston
  • pino
  • bunyan

示例(winston):

const winston = require('winston');

const logger = winston.createLogger({
  transports: [
    new winston.transports.File({
      filename: 'app.log',
      maxsize: 10 * 1024 * 1024, // 10MB
      maxFiles: 5,
      tailable: true
    })
  ]
});

✅ 3. PM2 日志管理

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

✅ 4. Docker 限制日志大小

/etc/docker/daemon.json:

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

重启 Docker:

systemctl restart docker

四、常见原因排查

原因 解决
异常循环打印错误 修复异常
生产环境 debug 日志 调整日志级别
第三方库疯狂输出 屏蔽或重定向
请求体 / 大对象打印 不打印 payload

五、推荐标准配置(生产)

  • ✅ 日志分级(error / warn / info)
  • ✅ 单文件 ≤ 10MB
  • ✅ 保留 ≤ 7 天
  • ✅ 自动压缩
  • ✅ 不打印敏感信息

如果你能告诉我:

  • 用的是 Node / PM2 / Docker / Nginx
  • 日志路径或截图

我可以直接给你可复制的配置方案。

0 踩