在 Debian 上监控 Node.js 日志,常见做法分为 “日志来源管理” 和 “监控方式” 两方面。下面按实用程度给你一套方案。
常见方式:
console.log / console.errorwinston、pino、bunyan建议:不要只依赖 console,生产环境用日志库写到文件或 syslog。
如果用 PM2 启动:
pm2 logs
pm2 logs app-name
日志默认在:
~/.pm2/logs/
tail -f /var/log/node/app.log
multitail /var/log/node/app.log /var/log/node/error.log
安装:
sudo apt install multitail
tail -f app.log | grep --line-buffered ERROR
如果你用 systemd 管理 Node.js:
service 文件示例
[Unit]
Description=Node.js App
[Service]
ExecStart=/usr/bin/node /opt/app/index.js
WorkingDirectory=/opt/app
User=node
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=node-app
Restart=always
[Install]
WantedBy=multi-user.target
查看日志:
journalctl -u node-app -f
journalctl -u node-app -p err
防止日志爆炸:
sudo apt install logrotate
示例 /etc/logrotate.d/node-app:
/var/log/node/*.log {
daily
rotate 7
compress
missingok
notifempty
}
sudo apt install lnav
lnav /var/log/node/
支持错误高亮、SQL 查询日志。
Node.js → 文件 → Filebeat → 平台
const winston = require('winston');
const logger = winston.createLogger({
transports: [
new winston.transports.File({ filename: '/var/log/node/app.log' }),
new winston.transports.File({
filename: '/var/log/node/error.log',
level: 'error'
})
]
});
pm2 logs
如果你愿意,可以告诉我:
我可以直接给你一套可复制的配置。