温馨提示×

linux nodejs日志怎么过滤错

小樊
41
2026-10-17 05:45:22
栏目: 编程语言

在 Linux 下过滤 Node.js 日志中的“错误(error)”,常见做法有下面几种,按从简单到专业给你整理:


一、直接用命令行过滤(最常用)

1. grep 过滤 error

cat app.log | grep -i error

或实时查看:

tail -f app.log | grep -i error

常见关键词:

grep -iE "error|exception|stack|failed" app.log

2. 只看错误级别(如果用了日志级别)

grep -i "error" app.log

如果是 JSON 日志:

grep '"level":"error"' app.log

二、Node.js 日志本身的错误来源

1. console.error

console.error('something wrong');

过滤:

grep -i "error" app.log

2. 未捕获异常(重点)

process.on('uncaughtException', err => {
  console.error('uncaughtException:', err);
});

process.on('unhandledRejection', err => {
  console.error('unhandledRejection:', err);
});

三、使用日志库(推荐)

Winston 示例

const winston = require('winston');

const logger = winston.createLogger({
  level: 'info',
  transports: [
    new winston.transports.File({ filename: 'error.log', level: 'error' }),
    new winston.transports.File({ filename: 'combined.log' })
  ]
});

只看错误:

tail -f error.log

PM2 日志

pm2 logs --err

只看错误日志,非常方便。


四、按时间 / 行数过滤

最近 100 行里的错误:

tail -n 100 app.log | grep error

指定时间段:

sed -n '/2026-01-21 10:00/,/2026-01-21 11:00/p' app.log | grep error

五、进阶(生产环境推荐)

  • ELK / Grafana Loki:按 level=error 检索
  • Sentry:自动捕获 Node.js 异常
  • jq(JSON 日志):
cat app.log | jq 'select(.level=="error")'

如果你愿意,可以:

  • 贴一段 Node.js 日志示例
  • 或告诉我你用的是 pm2 / docker / 原生 node

我可以直接帮你写最合适的过滤命令。

0 踩