在 Debian 上监控 Node.js 运行日志,通常有应用自身日志、系统服务日志、进程管理工具日志几种方式。下面按常见场景给你一套实用方案。
如果你是这样启动的:
node app.js
日志会直接输出到终端(stdout/stderr)。
node app.js 2>&1 | tee app.log
tail -f app.log
npm install -g pm2
pm2 start app.js --name myapp
pm2 logs
pm2 logs myapp
pm2 logs myapp --lines 200
PM2 日志默认在:
~/.pm2/logs/
sudo nano /etc/systemd/system/nodeapp.service
示例:
[Unit]
Description=Node.js App
After=network.target
[Service]
User=www-data
WorkingDirectory=/var/www/myapp
ExecStart=/usr/bin/node /var/www/myapp/app.js
Restart=always
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=nodeapp
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl start nodeapp
sudo systemctl enable nodeapp
journalctl -u nodeapp -f
journalctl -u nodeapp --since "10 min ago"
如果你自己写日志文件(如 app.log):
const fs = require('fs');
const log = fs.createWriteStream('app.log', { flags: 'a' });
console.log = (msg) => log.write(msg + '\n');
sudo nano /etc/logrotate.d/nodeapp
/var/www/myapp/app.log {
daily
rotate 7
compress
missingok
notifempty
copytruncate
}
pm2 list
systemctl status nodeapp
| 场景 | 推荐方式 |
|---|---|
| 本地开发 | node app.js + tail -f |
| 生产服务 | systemd + journalctl |
| 多进程 | PM2 |
| 日志集中 | Loki / ELK |
如果你愿意,可以告诉我:
我可以给你一套完全适配你环境的监控方案。