温馨提示×

ubuntu nodejs日志怎样过滤

小樊
45
2026-09-27 17:05:18
栏目: 编程语言

在 Ubuntu 上过滤 Node.js 日志,常见做法取决于日志写在哪、用什么方式运行 Node.js。下面按场景给你总结几种实用方法。


一、Node.js 直接输出到终端(stdout / stderr)

1. 用 grep 实时过滤

node app.js | grep ERROR

只看错误日志:

node app.js 2>&1 | grep -i error

2. 后台运行时过滤

node app.js > app.log 2>&1 &
grep ERROR app.log

实时跟踪:

tail -f app.log | grep ERROR

二、使用 PM2(最常见)

1. 查看日志

pm2 logs

2. 只看某个 app

pm2 logs app-name

3. 过滤关键字

pm2 logs | grep ERROR

或:

pm2 logs app-name --lines 100 | grep WARN

三、Systemd 方式运行(生产推荐)

1. 查看全部日志

journalctl -u node-app.service

2. 实时查看

journalctl -u node-app.service -f

3. 按级别 / 关键字过滤

journalctl -u node-app.service | grep ERROR

只看今天:

journalctl -u node-app.service --since today

四、按日志级别过滤(建议规范化)

推荐日志格式

console.log('[INFO] server started')
console.error('[ERROR] db connection failed')

过滤:

grep '\[ERROR\]' app.log

五、进阶:用工具更方便

1. jq(JSON 日志)

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

2. lnav(日志查看器)

sudo apt install lnav
lnav app.log

六、最佳实践建议

  • ✅ 生产环境用 PM2 或 systemd
  • ✅ 日志写成 结构化(JSON)
  • ✅ 用 grep / jq / lnav 过滤
  • ❌ 不要只靠 console.log

如果你能告诉我:

  • Node.js 是怎么运行的(直接 / PM2 / Docker / systemd)
  • 日志是文本还是 JSON

我可以给你更精确的过滤命令。

0 踩