温馨提示×

Debian JS日志为何异常

小樊
51
2026-08-11 22:12:49
栏目: 编程语言

Debian 上“JS 日志异常”通常不是单一原因,而是运行环境、应用代码、系统资源或日志配置共同作用的结果。下面按常见场景 + 排查思路给你一个系统性的分析。


一、常见原因分类

1️⃣ Node.js 应用本身问题(最常见)

✅ 未捕获的异常 / Promise 拒绝

throw new Error('xx');        // 未 try/catch
Promise.reject('err');        // 未 .catch()

表现:

  • 日志突然中断
  • 出现 uncaughtException / unhandledRejection
  • 进程直接退出

✅ 建议:

process.on('uncaughtException', (err) => {
  console.error('Uncaught:', err);
});

process.on('unhandledRejection', (reason) => {
  console.error('Unhandled Rejection:', reason);
});

2️⃣ systemd 日志异常(Debian 常见)

Debian 默认用 systemd + journald 管理 Node 服务。

常见现象

  • 日志“丢失”
  • 日志时间错乱
  • 日志被截断
  • 重启后日志消失

✅ 排查:

journalctl -u your-service -f

✅ 检查服务文件:

[Service]
StandardOutput=journal
StandardError=journal

✅ 防止日志被截断:

journalctl --vacuum-size=100M

3️⃣ 日志文件权限 / 磁盘问题

✅ 磁盘满

df -h

表现:

  • 日志不再增长
  • 写入失败但无报错

✅ inode 满

df -i

✅ 权限问题

ls -l /var/log/your-app

4️⃣ 时区 / 时间异常(Debian 常见)

日志时间不对,看起来像“异常”。

timedatectl

✅ 设置时区:

timedatectl set-timezone Asia/Shanghai

5️⃣ PM2 / Docker / Nginx 日志问题

PM2

pm2 logs
pm2 flush   # 清理旧日志

Docker

docker logs container_id

常见问题:

  • stdout 被缓冲
  • journald 限制日志大小

6️⃣ JS 日志库配置错误

如:

  • winston
  • pino
  • bunyan

常见问题:

  • 日志级别设置错误(只打 error)
  • transport 配置错误
  • 日志被写到 /dev/null

✅ 示例(winston):

logger.add(new winston.transports.File({
  filename: '/var/log/app/error.log',
  level: 'error'
}));

7️⃣ 系统 OOM / 进程被杀

Debian 日志异常 + 进程消失:

dmesg | grep -i oom
journalctl -k | grep -i kill

二、快速排查清单(推荐按顺序)

# 1. 看系统日志
journalctl -xe

# 2. 看 Node 服务
journalctl -u your-service -f

# 3. 磁盘 & inode
df -h
df -i

# 4. 时间
timedatectl

# 5. Node 进程状态
ps aux | grep node

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

你可以告诉我:

  1. JS 是 Node.js 还是浏览器?
  2. ✅ 日志是:
    • systemd
    • PM2
    • Docker
    • 文件日志
  3. ✅ 具体异常现象(贴一段日志最好)
  4. ✅ Debian 版本(cat /etc/os-release

我可以直接帮你定位是哪一类问题,并给出最小修复方案

0