在 Linux 环境下分析 JavaScript(JS)日志,通常取决于日志来源(Node.js 后端、前端浏览器、容器、PM2、Nginx 等)。下面按常见场景 + 实用方法系统讲解。
常见形式:
console.log / console.errorapp.log)cat app.log
less app.log
tail -f app.log # 实时查看
grep "error" app.log
grep -i "exception" app.log
grep "2025-01-20 10:" app.log
grep -n "Error" app.log
查看前后内容:
grep -A 5 -B 5 "TypeError" app.log
grep "Error" app.log | awk '{print $1, $2}' | sort | uniq -c | sort -nr
PM2 默认日志路径:
~/.pm2/logs/
查看:
pm2 logs
pm2 logs app-name --lines 100
错误示例:
TypeError: Cannot read properties of undefined
at /app/user.js:23:15
定位问题:
grep -R "user.js:23" /app
jq 分析 JSON 日志(非常重要)如果日志是 JSON(推荐做法):
{"level":"error","message":"DB failed","time":"2025-01-20T10:00:00Z"}
yum install jq # centos
apt install jq # ubuntu
jq 'select(.level=="error")' app.log
jq '.message' app.log
jq '.level' app.log | sort | uniq -c
grep "POST /api" access.log
分析 500 错误:
awk '$9==500 {print}' access.log
前端通过接口上传错误:
POST /log/js-error
查看:
grep "/log/js-error" access.log
docker logs container_id
docker logs -f container_id
kubectl logs pod-name
kubectl logs pod-name --previous
less app.log
/error
n / N
awk '{print $7}' access.log | sort | uniq -c | sort -nr | head
awk '{print $4}' app.log | cut -d: -f1-2 | uniq -c
✅ 不要只用 console.log
✅ 统一日志格式
{
"time": "",
"level": "",
"msg": "",
"requestId": ""
}
✅ 关键字段
| 问题 | 方法 |
|---|---|
| 后端报错 | grep Error + jq |
| 接口慢 | Nginx 响应时间 |
| 偶发错误 | 按时间 + requestId |
| 内存泄漏 | 日志 + 监控 |
| 线上问题 | 实时 tail -f |
如果你愿意,可以告诉我:
我可以 直接帮你写分析命令或脚本。