温馨提示×

怎样分析debian nodejs日志

小樊
43
2026-09-04 02:40:23
栏目: 编程语言

在 Debian 上分析 Node.js 日志,通常要从日志来源、格式、工具和分析方法几个方面入手。下面按实用流程说明。


一、先搞清楚 Node.js 日志在哪里

1. 应用自身日志

  • 控制台输出(console.log / console.error
  • 日志库输出(如 winston、pino、bunyan)
  • 常见路径:
    /var/log/myapp/
    /srv/myapp/logs/
    ~/myapp/logs/
    

2. 系统服务日志(重要)

如果 Node.js 是通过 systemd 启动的(最常见):

journalctl -u your-node-service.service

实时查看:

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

按时间:

journalctl -u your-node-service.service --since "2024-01-01" --until "2024-01-02"

二、Node.js 日志常见格式

1. 简单文本

2024-01-01 10:00:00 Error: connect ECONNREFUSED

2. JSON 日志(推荐)

{"level":"error","time":"2024-01-01T10:00:00Z","msg":"db error"}

适合用 jq 分析。


三、基础命令行分析(Debian 必备)

1. 实时查看

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

2. 错误排查

grep -i error /var/log/myapp/app.log

3. 统计错误数量

grep -c "Error" /var/log/myapp/app.log

4. 按时间段分析

awk '$1 >= "2024-01-01" && $1 <= "2024-01-02"' app.log

四、使用 journalctl 高级分析

查看某次崩溃

journalctl -u node-app.service -p err

查看最近 100 行

journalctl -u node-app.service -n 100

导出为文件

journalctl -u node-app.service > node.log

五、结构化日志分析(JSON)

假设使用 pino / winston JSON 日志:

安装 jq

sudo apt install jq

提取错误日志

cat app.log | jq 'select(.level=="error")'

统计错误类型

cat app.log | jq -r '.msg' | sort | uniq -c | sort -nr

六、性能与异常分析思路

1. 崩溃类

  • uncaughtException
  • unhandledRejection
  • OOM(内存溢出)

查看:

dmesg | grep node
journalctl -u node-app.service | grep -i kill

2. 请求慢

  • 检查响应时间日志
  • 数据库慢查询
  • 事件循环阻塞

3. 内存泄漏

  • 使用 --inspect
  • 配合 Chrome DevTools

七、推荐日志方案(生产环境)

  • 使用 winston / pino
  • 输出 JSON 日志
  • 接入:
    • rsyslog
    • logrotate
    • ELK / Loki / Grafana

八、一个完整分析示例

# 1. 查看服务状态
systemctl status node-app

# 2. 查看错误日志
journalctl -u node-app -p err -n 50

# 3. 导出日志
journalctl -u node-app > node.log

# 4. 分析错误
grep -i "error" node.log | less

如果你愿意,可以:

  • 贴一段 Node.js 日志内容
  • 或说明你是 pm2 / systemd / docker 启动的

我可以直接帮你分析具体日志。

0