在 Ubuntu 上监控 Node.js 日志,常见做法分 “日志来源” 和 “监控方式” 两类。下面按实用程度给你一套方案。
console.log / console.error
fs.writeFile / winston / pino
tail -f /var/log/node/app.log
pm2 logs
pm2 logs app-name
journalctl -u node-app.service -f
npm install -g pm2
pm2 start app.js --name node-app
~/.pm2/logs/node-app-out.log
~/.pm2/logs/node-app-error.log
pm2 flush # 清空日志
pm2 reload all # 热重启
✅ 优点:自动重启、日志分割、方便监控
[Unit]
Description=Node App
After=network.target
[Service]
ExecStart=/usr/bin/node /opt/app/app.js
WorkingDirectory=/opt/app
User=www-data
StandardOutput=syslog
StandardError=syslog
Restart=always
[Install]
WantedBy=multi-user.target
journalctl -u node-app -f
sudo nano /etc/logrotate.d/node-app
示例:
/var/log/node/*.log {
daily
rotate 7
compress
missingok
notifempty
}
const winston = require('winston');
pm2 notify#!/bin/bash
tail -F /var/log/node/app.log | while read line
do
echo "$line" | grep "ERROR" && echo "报警"
done
| 场景 | 推荐 |
|---|---|
| 本地开发 | tail -f |
| 小项目 | PM2 |
| 生产 | systemd + logrotate |
| 大型 | PM2 + ELK |
如果你愿意,可以告诉我:
我可以直接给你一套 可复制配置。