温馨提示×

debian js日志为何变大

小樊
48
2026-09-01 06:01:13
栏目: 编程语言

在 Debian 系统上,JS(JavaScript)日志变大通常不是 JS 语言本身的问题,而是运行环境、日志配置或应用行为导致的。下面按常见原因给你一个系统性的梳理:


一、最常见原因

1. 应用没有做日志轮转(log rotate)

Debian 默认有 logrotate,但如果:

  • JS 应用直接写文件(如 fs.appendFile
  • 没接入 winston / pms2 / systemd 的日志管理

就会导致:

app.log → 几 GB 甚至几十 GB

✅ 解决:

  • 使用 pm2 logs(自动管理)
  • 或配置 /etc/logrotate.d/yourapp
  • 或改用 winston + DailyRotateFile

2. 控制台输出被 systemd 捕获

如果你的 JS 是用:

systemctl start yourapp

而应用一直 console.log

日志会进:

/var/log/journal/

journal 默认不会自动清理,容易暴涨。

✅ 解决:

journalctl --vacuum-size=100M

并限制:

[Service]
StandardOutput=append:/var/log/yourapp.log

3. 异常 / 错误被无限打印

常见问题:

  • try/catchconsole.error(err)
  • 请求失败死循环
  • WebSocket / 轮询不断报错

日志示例:

Error: connect ECONNREFUSED
Error: connect ECONNREFUSED
...

✅ 解决:

  • 限制错误日志频率
  • 不在循环里打日志
  • 使用日志级别(error / warn / info)

4. 调试模式忘记关

如:

  • DEBUG=*
  • NODE_ENV=development
  • nest start --debug

会输出大量内部日志。

✅ 解决:

NODE_ENV=production

5. PM2 日志未限制

PM2 默认:

~/.pm2/logs/

不会自动切割。

✅ 解决:

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

二、Debian 特有注意点

journald 膨胀(非常常见)

du -sh /var/log/journal

如果很大:

sudo journalctl --vacuum-time=7d

Docker + JS 日志

如果你用 Docker:

docker logs container | wc -l

默认 JSON 日志不限制大小。

✅ 解决:

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

三、快速排查命令

# 看哪个日志大
du -sh /var/log/*

# JS 应用日志
ls -lh ~/.pm2/logs/

# journal 大小
journalctl --disk-usage

四、建议你补充的信息

如果你能告诉我:

  1. JS 运行方式(node / pm2 / docker / systemd)
  2. 日志路径(/var/log? 应用目录?)
  3. 日志内容示例

我可以帮你精准定位是哪一种原因,并给出对应配置。

0