在 Linux 下监控 Node.js 日志,通常可以从日志采集、实时查看、集中化监控、告警几个层面来做。下面按常见场景给你一个实用指南。
tail -f如果 Node.js 直接输出到文件:
tail -f /var/log/node/app.log
只看错误:
tail -f /var/log/node/app.log | grep ERROR
pm2 logs(如果用 PM2)pm2 logs
pm2 logs appname
pm2 logs --err # 只看错误日志
console.log 到处打winstonpino(性能最好)bunyan示例(pino):
const pino = require('pino')
const logger = pino({ level: 'info' })
logger.info({ user: 1 }, 'user login')
logger.error(err, 'db error')
输出到文件:
node app.js >> /var/log/node/app.log 2>&1
如果你用 systemd 启动 Node.js:
journalctl -u node-app.service -f
配置示例:
[Service]
ExecStart=/usr/bin/node /opt/app/app.js
StandardOutput=journal
StandardError=journal
查看错误:
journalctl -u node-app.service -p err
适合:
非常适合 Kubernetes / 容器。
企业常用,开箱即用。
const Sentry = require('@sentry/node')
Sentry.init({ dsn: 'xxx' })
tail -f app.log | grep --line-buffered ERROR | while read line
do
echo "$line" | mail -s "Node ERROR" admin@x.com
done
UnhandledPromiseRejection✅ 使用 PM2 或 systemd
✅ 日志分级(info / warn / error)
✅ 日志结构化(JSON)
✅ 集中存储(Loki / ELK)
✅ 接入 Sentry
✅ 设置告警,而不是“人肉看日志”
如果你愿意,可以告诉我:
我可以直接给你一套可复制的配置方案。