温馨提示×

怎样过滤linux js日志

小樊
51
2026-09-14 16:41:34
栏目: 编程语言

在 Linux 下“过滤 JS 日志”通常分几种场景:过滤 Node.js 运行日志、过滤前端 JS 在浏览器产生的日志(已落盘)、在日志文件里按关键词/级别/时间过滤。下面按常见用法给你一套实用方法。


一、基础:用 grep 过滤日志内容

假设日志文件是 app.log 或 server.log

1. 按关键字过滤

grep "Error" app.log
grep "TypeError" app.log
grep "undefined is not" app.log

2. 忽略大小写

grep -i "error" app.log

3. 显示前后上下文(非常有用)

grep -C 5 "TypeError" app.log   # 前后5行
grep -A 10 "Error" app.log      # 后10行
grep -B 10 "Error" app.log      # 前10行

4. 多个关键词(或关系)

grep -E "Error|Warn|Exception" app.log

5. 排除某些日志

grep -v "heartbeat" app.log

二、按日志级别过滤(Node.js / Winston / PM2)

常见级别

ERROR / WARN / INFO / DEBUG
grep "\"level\":\"error\"" app.log
grep -i "level.*error" app.log

如果是 JSON 日志:

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

三、实时过滤(tail + grep)

tail -f app.log | grep "Error"
tail -f app.log | grep -i "exception"

只看重错误:

tail -f app.log | grep -E "Error|TypeError|ReferenceError"

四、按时间过滤日志

1. 今天

grep "2026-01-21" app.log

2. 某个时间段

awk '$0 >= "2026-01-21 10:00" && $0 <= "2026-01-21 11:00"' app.log

3. 最近 N 分钟(配合 tail)

tail -n 1000 app.log | grep "Error"

五、Node.js 专项

1. 只显示 console.error

如果你用的是:

console.error('xxx')
node app.js 2> error.log

然后:

tail -f error.log

2. PM2 日志

pm2 logs
pm2 logs --err
pm2 logs --lines 100

过滤:

pm2 logs | grep "Error"

3. 用 DEBUG 环境变量

DEBUG=* node app.js
DEBUG=express:* node app.js

六、结构化日志(推荐)

如果是 JSON 日志,用 jq 最舒服:

jq 'select(.level=="error")' app.log
jq 'select(.message | contains("Timeout"))' app.log

七、常见组合示例

查看最近错误 + 上下文

tail -n 500 app.log | grep -C 10 "TypeError"

排除健康检查

tail -f app.log | grep -v "GET /health"

统计错误数量

grep -c "Error" app.log

如果你能告诉我:

  • 是 Node.js 还是浏览器 JS
  • 日志是 文本还是 JSON
  • 用的什么框架(Express / Koa / Nest / PM2)

我可以直接给你精准的过滤命令。

0 踩