温馨提示×

ubuntu下nodejs日志咋分析

小樊
47
2026-10-18 05:38:17
栏目: 编程语言

在 Ubuntu 下分析 Node.js 日志,通常可以按日志来源 → 收集方式 → 分析工具 → 常见问题定位这个思路来。下面给你一套实用的方案。


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

1. 应用自身日志

  • console.log / console.error
  • 日志库:
    • winston
    • pino
    • log4js
    • bunyan

常见路径(示例):

/var/log/myapp/
~/myapp/logs/

2. 进程管理器日志

PM2

pm2 logs
pm2 logs appname
pm2 flush   # 清空日志

日志文件一般在:

~/.pm2/logs/

systemd(常见生产环境)

journalctl -u yourapp.service
journalctl -u yourapp.service -f
journalctl -u yourapp.service --since "2024-01-01"

3. Nginx / 反向代理日志(如有)

/var/log/nginx/access.log
/var/log/nginx/error.log

4. 系统日志

/var/log/syslog
dmesg

二、实时查看日志(最常用)

实时跟踪

tail -f app.log

跟踪多个文件

tail -f app.log error.log

跟随 systemd

journalctl -u yourapp -f

三、快速定位问题

1. 查错误

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

2. 查某个时间段

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

3. 查请求慢 / 超时

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

4. 内存 / CPU 问题

  • 应用日志中看:
    • heap out of memory
    • GC overhead
  • 系统层:
top
htop

四、日志分析工具(进阶)

1. 轻量分析

awk
sort
uniq -c

示例:统计错误出现次数

grep ERROR app.log | sort | uniq -c | sort -nr

2. 日志聚合(推荐生产)

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

3. 可视化

  • Kibana
  • Grafana
  • Datadog / Sentry(错误监控)

五、Node.js 日志最佳实践(很重要)

  1. 不要用 console.log 上生产
    • 用 winston / pino
  2. 日志结构化(JSON)
logger.info({ event: "login", userId: 123 }, "user login")
  1. 区分级别
    • error / warn / info / debug
  2. 结合 systemd 或 PM2
  3. 设置日志轮转(logrotate)

六、示例:systemd + Node.js 日志

service 文件

[Service]
ExecStart=/usr/bin/node /opt/app/index.js
Restart=always
StandardOutput=journal
StandardError=journal

查看

journalctl -u nodeapp -f

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

  • 你用的是 PM2 / systemd / Docker
  • 日志是 文本还是 JSON
  • 想分析 错误 / 性能 / 访问量

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

0 踩