温馨提示×

debian js日志过大怎么处理

小樊
42
2026-10-01 07:09:11
栏目: 编程语言

在 Debian 上,如果是 JS(Node.js / 前端构建 / 应用)产生的日志过大,一般可以从「排查 → 清理 → 限制 → 长期管理」几个层面处理。下面按常见场景说明。


一、先确认日志在哪里、是谁产生的

1. 常见 JS 日志位置

  • Node.js 应用
    • 应用自己写的日志(如 logs/、/var/log/xxx.log)
    • PM2 日志:~/.pm2/logs/
  • Nginx 反向代理 JS 应用:/var/log/nginx/
  • Systemd 服务日志:journalctl
  • Docker 中运行的 JS 服务:docker logs

2. 找出大文件

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

二、临时清理(应急)

1. 直接清空(不删文件)

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

✅ 不会影响正在写入的进程

2. PM2 日志

pm2 flush

3. journalctl 日志

sudo journalctl --vacuum-size=100M

三、从根本上限制日志大小(推荐)

方案 1:使用 logrotate(最常用)

创建配置(示例 Node.js 日志):

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

内容示例:

/var/log/node-app/*.log {
    daily
    rotate 7
    compress
    missingok
    notifempty
    copytruncate
}

测试:

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

✅ copytruncate 对 Node.js 很关键(不重启进程)


方案 2:Node.js 应用层控制

  • 使用 winston / pino / bunyan
  • 配置:
    • 文件大小限制
    • 日志轮转
    • 只记录 error/warn

示例(winston):

new winston.transports.File({
  filename: 'app.log',
  maxsize: 10 * 1024 * 1024,
  maxFiles: 5
})

方案 3:Docker 日志限制

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

重启 Docker 生效。


四、避免“无脑打日志”

常见导致 JS 日志爆炸的原因:

  • console.log(req)(整个请求对象)
  • 异常未捕获,循环打印
  • 生产环境开 debug 模式
  • 第三方库日志级别过低

✅ 生产环境建议:

  • 关掉 debug
  • 捕获全局异常
  • 只输出必要信息

五、如果你愿意,我可以更具体帮你

你可以告诉我:

  1. JS 是 Node.js 还是前端?
  2. 日志路径或文件名?
  3. 是否用 PM2 / Docker / systemd?
  4. Debian 版本?

我可以直接帮你写 logrotate 配置或 Node 日志方案。

0 踩