温馨提示×

Debian Nodejs日志如何分析

小樊
33
2026-07-13 03:44:12
栏目: 编程语言

Debian 上分析 Node.js 日志,通常取决于你日志写在哪、用什么方式记录。下面按常见场景系统说明,从“在哪看”到“怎么分析”。


一、Node.js 日志常见位置

1️⃣ 控制台日志(最常见)

如果你直接运行:

node app.js

日志会输出到 stdout / stderr

如果通过 systemd 管理:

journalctl -u your-node-service.service -f

2️⃣ 文件日志

常见路径:

/var/log/node/
/var/log/myapp/
$HOME/logs/

查看:

tail -f /var/log/node/app.log

3️⃣ PM2 管理的 Node.js

PM2 是最常见的 Node 进程管理器。

查看日志

pm2 logs
pm2 logs app-name
pm2 logs --lines 200

日志位置

~/.pm2/logs/

错误日志

pm2 logs app-name --err

二、日志分析常用命令(Debian/Linux)

1️⃣ 实时查看

tail -f app.log

2️⃣ 查找错误

grep -i error app.log
grep -i exception app.log

3️⃣ 按时间分析

grep "2026-01-21" app.log

4️⃣ 统计错误数量

grep -c "Error" app.log

5️⃣ 查看某段时间日志

sed -n '/2026-01-21 10:00/,/2026-01-21 11:00/p' app.log

三、Node.js 应用日志规范(很重要)

✅ 推荐日志格式(JSON)

console.log(JSON.stringify({
  level: 'info',
  time: new Date().toISOString(),
  message: 'User login',
  userId: 123
}));

然后可用工具分析:

jq . app.log

✅ 使用专业日志库

推荐:

  • winston
  • pino(性能最好)

pino 示例

const pino = require('pino');
const logger = pino({ level: 'info' });

logger.info('Server started');
logger.error('DB connection failed');

分析 pino 日志:

pino-pretty < app.log

四、systemd + Node.js 日志分析

查看服务日志

journalctl -u node-app.service
journalctl -u node-app.service -n 100
journalctl -u node-app.service -f

按时间

journalctl --since "2026-01-21 10:00" --until "11:00"

五、常见 Node.js 错误日志分析

1️⃣ 内存泄漏

关键词:

heap out of memory
JS stack trace

分析:

grep -i "heap" app.log

2️⃣ 请求异常

grep "500" app.log
grep "timeout" app.log

3️⃣ 启动失败

journalctl -u node-app.service | grep -i fail

六、日志轮转(防止磁盘爆满)

Debian 使用 logrotate

sudo apt install logrotate

示例配置:

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

七、推荐分析流程(实战)

  1. 确认日志来源
    • PM2 / systemd / 文件
  2. 定位错误
    grep -i error app.log
    
  3. 看上下文
    grep -A 10 -B 10 "Error" app.log
    
  4. 结合时间
  5. 必要时开启 debug 日志

八、如果你愿意,我可以进一步帮你

你可以直接贴出:

  • ✅ 日志片段
  • ✅ 启动方式(PM2 / systemd / docker)
  • ✅ 报错信息

我可以 直接帮你分析具体错误原因

0