在 Linux 上监控 Node.js 日志,常见做法取决于你日志是怎么打的(stdout、文件、第三方库)。下面按实战场景给你一个完整方案,从简单到专业。
如果你是这样启动的:
node app.js
日志会输出到终端,可直接用:
# 实时查看
tail -f app.log
# 查看最后 100 行
tail -n 100 app.log
✅ 适用于:
npm install -g pm2
pm2 start app.js --name my-node
# 实时查看所有日志
pm2 logs
# 查看指定应用
pm2 logs my-node
# 查看错误日志
pm2 logs my-node --err
# 查看最近 100 行
pm2 logs my-node --lines 100
✅ 优点:
~/.pm2/logs/如果 Node.js 输出到文件:
const fs = require('fs');
fs.writeFileSync('app.log', 'log...\n', { flag: 'a' });
监控:
tail -f app.log
搜索错误:
grep -i error app.log
npm install winston
const winston = require('winston');
const logger = winston.createLogger({
transports: [
new winston.transports.File({ filename: 'error.log', level: 'error' }),
new winston.transports.File({ filename: 'combined.log' })
]
});
logger.info('server start');
logger.error('db error');
监控:
tail -f combined.log
如果 Node.js 是 systemd 服务:
journalctl -u node-app -f
查看错误:
journalctl -u node-app --since "5 min ago"
✅ 适合:
| 工具 | 作用 |
|---|---|
| Filebeat | 收集日志 |
| Elasticsearch | 存储 & 搜索 |
| Kibana | 可视化 |
| Loki + Promtail | 轻量日志系统 |
✅ 适合:
top # 看 CPU / 内存
htop # 更友好
ps aux | grep node
lsof -i :3000
tail -f app.log
grep ERROR app.log
✅ 生产环境推荐
PM2 + Winston + tail / journalctl
✅ 大型系统
PM2 + Loki + Grafana
如果你愿意,可以告诉我:
我可以直接给你一套最适合你的监控方案。