监控 Ubuntu 上的 Node.js 日志,常见做法取决于日志产生方式和部署方式。下面按从简单到专业给你一套完整方案,你可以按场景选择。
node app.js
日志直接输出到终端。
实时查看:
Ctrl + C 停止
nohupnohup node app.js > app.log 2>&1 &
查看实时日志:
tail -f app.log
npm install -g pm2
pm2 start app.js --name my-app
# 实时查看所有日志
pm2 logs
# 只看某个应用
pm2 logs my-app
# 只看错误日志
pm2 logs my-app --err
# 只看普通日志
pm2 logs my-app --out
~/.pm2/logs/
pm2 install pm2-logrotate
配置示例:
pm2 set pm2-logrotate:max_size 10M
pm2 set pm2-logrotate:retain 7
docker logs -f 容器ID
✅ 最佳实践:
console.log()
console.error()
Docker 会自动收集。
winston(最常用)npm install winston
示例:
const winston = require('winston');
const logger = winston.createLogger({
level: 'info',
format: winston.format.json(),
transports: [
new winston.transports.File({ filename: 'error.log', level: 'error' }),
new winston.transports.File({ filename: 'combined.log' })
]
});
logger.info('服务启动');
logger.error('出错');
监控:
tail -f combined.log
如果 Node.js 是 systemd 服务:
journalctl -u node-app.service -f
tail -f /var/log/node/app.log
适合多台服务器 / 微服务:
| 工具 | 说明 |
|---|---|
| ELK(Elasticsearch + Logstash + Kibana) | 企业级 |
| Loki + Grafana | 轻量 |
| Fluent Bit | 低资源 |
| Datadog / New Relic | 商业 |
✅ 生产环境最佳实践
PM2 + pm2-logrotate + winston
✅ Docker 环境
stdout + docker logs + 可选 Loki
我可以直接给你一套可复制的配置。