温馨提示×

linux nodejs日志怎样检索

小樊
45
2026-10-26 02:33:53
栏目: 编程语言

在 Linux 下检索 Node.js 日志,通常取决于日志写在哪、以什么形式存在。下面按常见场景给你一套实用方法。


一、确认 Node.js 日志在哪

1. 控制台输出(最常见)

如果你直接运行:

node app.js

日志通常在:

  • 终端
  • 或重定向后的文件,例如:
node app.js > app.log 2>&1

2. 日志文件

常见位置:

  • ./logs/app.log
  • /var/log/xxx.log
  • PM2 日志:~/.pm2/logs/

3. 使用 PM2

pm2 logs
pm2 logs app-name

二、基础日志检索命令(最常用)

1. 查看日志文件

cat app.log
less app.log
tail -f app.log   # 实时查看

2. 按关键字搜索

grep "ERROR" app.log
grep -i "timeout" app.log   # 忽略大小写
grep -C 5 "Exception" app.log  # 上下各5行

3. 实时过滤日志

tail -f app.log | grep "ERROR"

三、按时间检索(非常实用)

1. 今天或某时间段的日志

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

2. 最近 N 分钟(结合 tail)

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

四、结构化日志(JSON / Winston / Pino)

示例日志

{"level":"error","message":"db failed","time":"2026-01-21T10:00:00Z"}

检索方式

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

或配合 jq:

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

五、结合 systemd(生产环境常见)

如果 Node.js 是用 systemd 启动的:

journalctl -u node-app.service
journalctl -u node-app.service -f
journalctl -u node-app.service --since "2026-01-21 09:00"

六、高级检索工具(推荐)

1. less 内搜索

less app.log
/ERROR

2. awk 提取字段

awk '/ERROR/ {print $1, $2, $0}' app.log

3. zgrep(压缩日志)

zgrep "ERROR" app.log.1.gz

七、实战示例

查找某用户相关错误

grep "user_id=123" app.log | grep "ERROR"

统计错误数量

grep -c "ERROR" app.log

八、建议的最佳实践

  • ✅ 使用 Winston / Pino 写结构化日志
  • ✅ 日志按天切割
  • ✅ 生产环境用 PM2 + 日志文件
  • ✅ 配合 grep / jq / journalctl

如果你愿意,可以告诉我:

  • 你用的是 原生 console / Winston / PM2 / Docker
  • 日志是 文本还是 JSON
  • 想解决的是 实时排查还是历史分析

我可以直接给你针对性的命令模板。

0 踩