温馨提示×

debian下nodejs日志如何分析

小樊
48
2026-09-10 04:31:11
栏目: 编程语言

在 Debian 下分析 Node.js 日志,通常可以按日志来源 → 日志内容 → 分析工具 → 常见场景的思路来进行。下面给你一套实用方案。


一、Node.js 日志一般来自哪里

1. 应用自身日志

  • console.log / console.error
  • 日志库输出(常用):
    • winston
    • pino
    • bunyan
    • morgan(HTTP 请求日志)

2. 系统 / 进程管理日志

  • systemd(推荐方式)
    journalctl -u your-node-service
    
  • PM2
    pm2 logs
    pm2 logs appName
    

3. Web 服务器 / 反向代理

  • Nginx
    /var/log/nginx/access.log
    /var/log/nginx/error.log
    
  • Apache
    /var/log/apache2/
    

二、快速查看日志(Debian 常用命令)

1. 实时查看

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

2. 查看最近 N 行

tail -n 200 /var/log/your-app/app.log

3. 过滤关键字

grep "ERROR" app.log
grep -i "timeout" app.log

4. 统计错误次数

grep "ERROR" app.log | wc -l

5. 按时间范围(systemd)

journalctl -u node-app --since "2026-01-20 10:00" --until "2026-01-20 11:00"

三、使用 journalctl 分析 Node.js(systemd 场景)

查看服务日志

journalctl -u node-app.service -f

查看错误级别

journalctl -u node-app.service -p err

导出日志

journalctl -u node-app.service --no-pager > node-logs.txt

四、PM2 日志分析(非常常见)

查看所有日志

pm2 logs

查看某个应用

pm2 logs my-api

日志文件位置

~/.pm2/logs/

错误日志分析

pm2 logs --err

五、结构化日志(推荐做法)

如果日志是 JSON(如 pino):

cat app.log | jq '.level == "error"'

示例 pino 日志:

{"level":50,"time":1705732800000,"msg":"DB connection failed"}

分析:

jq 'select(.level >= 50)' app.log

六、常见分析场景

1. 接口报错

  • ERROR / stack
  • 结合 Nginx access.log 看状态码
grep " 500 " /var/log/nginx/access.log

2. 内存 / CPU 问题

pm2 monit
top -p $(pgrep node)

3. 启动失败

journalctl -u node-app -n 50

4. 请求慢

  • morgan 日志
  • Nginx 响应时间
awk '{print $NF}' access.log | sort -n

七、推荐日志分析工具

轻量

  • less
  • grep
  • jq

进阶

  • ELK(Elasticsearch + Logstash + Kibana)
  • Grafana + Loki
  • Fluent Bit

八、最佳实践建议

  1. winston / pino 替代 console.log
  2. 日志分级(info / warn / error)
  3. 生产环境用 systemd 或 PM2
  4. 日志轮转(logrotate
  5. 不记录敏感信息(密码、token)

如果你愿意,可以告诉我:

  • 你用的是 systemd / PM2 / docker
  • 日志是 文本还是 JSON
  • 想分析的是 错误 / 性能 / 安全

我可以直接给你针对性的分析命令或脚本

0