在 Ubuntu 下分析 Node.js 日志,通常可以按日志来源 → 收集方式 → 分析工具 → 常见问题定位这个思路来。下面给你一套实用的方案。
console.log / console.errorwinstonpinolog4jsbunyan常见路径(示例):
/var/log/myapp/
~/myapp/logs/
pm2 logs
pm2 logs appname
pm2 flush # 清空日志
日志文件一般在:
~/.pm2/logs/
journalctl -u yourapp.service
journalctl -u yourapp.service -f
journalctl -u yourapp.service --since "2024-01-01"
/var/log/nginx/access.log
/var/log/nginx/error.log
/var/log/syslog
dmesg
tail -f app.log
tail -f app.log error.log
journalctl -u yourapp -f
grep -i error app.log
grep -i "uncaught" app.log
grep -i "exception" app.log
sed -n '/2024-01-01 10:00/,/2024-01-01 11:00/p' app.log
grep -i "timeout" app.log
grep -i "ETIMEDOUT" app.log
heap out of memoryGC overheadtop
htop
awk
sort
uniq -c
示例:统计错误出现次数
grep ERROR app.log | sort | uniq -c | sort -nr
winston / pinologger.info({ event: "login", userId: 123 }, "user login")
[Service]
ExecStart=/usr/bin/node /opt/app/index.js
Restart=always
StandardOutput=journal
StandardError=journal
journalctl -u nodeapp -f
如果你愿意,可以告诉我:
我可以直接给你针对性的命令或脚本。