温馨提示×

怎样解析linux js日志

小樊
40
2026-10-05 12:26:12
栏目: 编程语言

在 Linux 下“解析 JS 日志”通常分为几种场景:

  1. 前端 JS 在浏览器产生的日志(console / 报错)
  2. Node.js 服务端 JS 日志
  3. 日志文件本身就是文本(.log),里面是 JS 报错或 JSON 日志

下面按常见用法给你一个系统性的解析思路。


一、明确日志来源和格式

先确认日志类型:

head -n 20 app.log

常见格式有:

  • 纯文本报错
  • JSON 行日志(一行一条 JSON)
  • 带时间戳的自定义格式

二、基础文本解析(通用)

1. 查看错误关键字

grep -i "error\|exception\|undefined\|TypeError" app.log

2. 查看某段时间日志

grep "2024-01-21 10:" app.log

3. 实时跟踪

tail -f app.log

三、解析 Node.js 日志

1. 常见的 Node 错误

TypeError: Cannot read properties of undefined
Error: connect ECONNREFUSED
UnhandledPromiseRejectionWarning

提取堆栈:

grep -A 10 "TypeError" app.log

2. 用 jq 解析 JSON 日志(推荐)

如果日志是:

{"level":"error","msg":"db failed","stack":"..."}

解析:

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

只看消息:

jq -r '.msg' app.log

四、解析前端 JS 日志(如 Sentry / 浏览器上报)

如果是浏览器上报到服务器的日志:

1. 提取 URL 和错误类型

jq -r '{url:.url, error:.error}' logs.json

2. 统计错误次数

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

五、用脚本批量解析(Python 示例)

import json

with open("app.log") as f:
    for line in f:
        try:
            data = json.loads(line)
            if data.get("level") == "error":
                print(data.get("msg"))
        except:
            pass

六、可视化 & 进阶工具

  • ELK(Elasticsearch + Logstash + Kibana)
  • Grafana + Loki
  • Sentry(前端/Node 错误追踪首选)
  • pm2 logs(Node 进程管理)

七、常见坑提醒

  • JS 错误经常是 异步报错,日志里没有清晰上下文
  • 生产环境建议 结构化日志(JSON)
  • 不要只信 console.log,用 winston / pino

如果你能发一段真实日志样例(脱敏后),我可以直接帮你写精准的解析命令或脚本。

0 踩