温馨提示×

为啥debian js日志不全

小樊
36
2026-09-13 05:05:12
栏目: 编程语言

Debian 上“JS 日志不全”通常不是 Debian 本身的问题,而是运行环境 / 应用配置 / 日志采集方式导致的。下面按常见原因给你梳理一下:


一、最常见原因

1. Node.js 应用本身没打全日志

  • 只用了 console.log,但:
    • 错误被 try/catch 吞了
    • 没监听 uncaughtException / unhandledRejection
  • 不同环境日志级别不同:
    if (process.env.NODE_ENV === 'production') {
      // 只打 error
    }
    

✅ 检查:

process.on('uncaughtException', e => console.error(e));
process.on('unhandledRejection', e => console.error(e));

2. systemd 截断了日志

如果你用 systemctl 启动 Node:

  • journald 默认有大小限制
  • 单行太长会被截断
  • 老日志会被自动清理

查看:

journalctl -u your-service -n 1000 --no-pager

调整:

# /etc/systemd/journald.conf
Storage=persistent
SystemMaxUse=500M

然后:

systemctl restart systemd-journald

3. 输出被重定向 / 缓冲了

  • > app.log 2>&1 & 可能:
    • 被 logrotate 截断
    • Node 的 stdout 被缓冲(尤其是非 TTY)

✅ 建议:

  • winston / pino 直接写文件
  • 或:
node app.js | tee -a app.log

4. PM2 / forever 日志机制

如果你用 PM2:

pm2 logs

但:

  • 默认只保留最近 N 行
  • 日志文件在 ~/.pm2/logs

✅ 配置:

pm2 set pm2:max-log-size 10M
pm2 set pm2:retain 30

5. Docker 场景(如果你在容器里)

Docker 默认:

  • json-file 驱动
  • 有大小限制
  • 容器重启日志可能丢

✅ 查看:

docker logs --tail 1000 container_id

6. 时区 / 时间错乱导致“以为没日志”

Debian 默认可能是 UTC:

date
timedatectl

二、快速排查清单 ✅

你可以依次确认:

  1. JS 是不是真打了日志(本地跑)
  2. 是 console 还是日志库
  3. 用 systemd / pm2 / docker 哪个
  4. 日志去哪了(journal / 文件 / 容器)
  5. 是否被截断或轮转

三、如果你愿意,我可以更精确帮你

你可以补充:

  • 怎么启动的(systemd / pm2 / docker / 手动)
  • 用的什么 JS(Node / 浏览器 / Electron)
  • 日志“不全”是:缺失 / 被截断 / 时间不对?

我可以直接给你对应配置。

0