在 Linux 环境下分析 Node.js 日志时,有多种工具可根据需求选择,以下是分类整理和推荐:
grep / awk / sed
快速过滤关键字(如错误、状态码):
grep "ERROR" app.log | awk '{print $5}' | sort | uniq -c
tail / less / head
实时监控日志尾部:
tail -f app.log | grep "WARN"
jq
解析 JSON 格式日志(需应用输出 JSON 日志):
cat app.log | jq '. | select(.level == "error")'
Logstash (ELK Stack)
复杂日志管道处理,搭配 Elasticsearch + Kibana 实现可视化。
Pino
Node.js 高性能 JSON 日志工具,配套分析命令:
cat app.log | pino-pretty
Bunyan
结构化日志工具,支持 CLI 格式化:
bunyan app.log -l error
Winston
灵活日志库,可输出多种格式,需配合其他工具分析。
LNAV (Log File Navigator)
交互式日志查看器,支持语法高亮和时间轴:
lnav app.log
GoAccess
实时 HTTP 访问日志分析(适合 Web 服务):
goaccess access.log --log-format=COMBINED
Sentry / Datadog
云端日志监控,提供告警和聚合分析(需集成 SDK)。
Grafana + Loki
轻量级日志聚合系统,支持 Prometheus 风格查询:
# 查询错误日志
{app="my-node-app", level="error"} |~ "timeout"
Kibana (ELK Stack)
强大的全文搜索和仪表盘功能,适合大规模日志。
用 Node.js 快速编写分析脚本(示例):
const fs = require('fs');
const logs = fs.readFileSync('app.log', 'utf-8').split('\n');
logs.filter(line => line.includes('ERROR')).forEach(console.log);
grep
+ jq
根据日志量级(单机/分布式)和是否需要长期存储选择合适的方案。