温馨提示×

linux js日志过大怎处理

小樊
41
2026-09-14 16:33:35
栏目: 编程语言

在 Linux 环境下,JS 日志过大通常指 Node.js 应用日志、前端构建日志或浏览器/服务端 JS 运行日志占满磁盘。下面按常见场景 + 处理方案说明。


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

# 查看磁盘占用
df -h

# 查找大日志文件
du -sh /var/log/*
du -sh ~/logs/*

# 查找大于 100M 的文件
find / -type f -size +100M 2>/dev/null

常见 JS 日志位置:

  • Node.js:/var/log/*.logpm2 logs项目 logs/
  • Nginx 反向代理:/var/log/nginx/
  • Docker 容器日志:/var/lib/docker/containers/

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

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

> app.log
# 或
truncate -s 0 app.log

2. 删除旧日志

rm -f app.log.2023*

三、根本解决方案(推荐)

✅ 方案 1:使用日志轮转(logrotate)

适用于服务器日志

示例 /etc/logrotate.d/nodejs

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

应用:

logrotate -d /etc/logrotate.d/nodejs  # 测试
logrotate -f /etc/logrotate.d/nodejs  # 强制执行

✅ 方案 2:Node.js 日志库配置

不要自己写 fs.appendFile

推荐使用:

  • winston
  • pino
  • bunyan

winston 示例(按大小切割)

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

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

✅ 方案 3:PM2 日志管理

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

✅ 方案 4:Docker 日志限制(非常常见)

/var/lib/docker/containers/xxx/json.log 爆炸

修改 docker 配置

/etc/docker/daemon.json

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

重启:

systemctl restart docker

四、前端构建日志过大(如 Vite / Webpack)

  • 关闭 verbose 日志
  • CI 中限制输出
npm run build -- --silent

五、防复发 checklist

✅ 日志轮转
✅ 控制日志级别(生产用 info / error)
✅ 不打印大对象
✅ 容器日志限大小
✅ 定期监控磁盘


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

  • Node / 前端 / Docker / Nginx
  • 日志路径或报错信息

我可以给你精确配置示例

0