在 Debian 上监控 Node.js 日志,常见做法取决于日志输出方式(stdout / 文件 / 日志库)以及运行方式(systemd、PM2、Docker 等)。下面按常见场景给你一套实用方案。
node app.js
查看:
tail -f nohup.out
# 或
journalctl -f
# /etc/systemd/system/nodeapp.service
[Unit]
Description=Node.js App
After=network.target
[Service]
User=node
WorkingDirectory=/var/www/app
ExecStart=/usr/bin/node index.js
Restart=always
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl start nodeapp
sudo systemctl status nodeapp
journalctl -u nodeapp -f
journalctl -u nodeapp --since "2025-01-01" --until "2025-01-02"
✅ 优点
npm install -g pm2
pm2 start index.js --name myapp
pm2 logs myapp
pm2 logs myapp --lines 100
pm2 logs myapp --lines 0
~/.pm2/logs/
✅ 优点
const fs = require('fs');
const logStream = fs.createWriteStream('/var/log/node/app.log', { flags: 'a' });
console.log = (msg) => {
logStream.write(`${new Date().toISOString()} ${msg}\n`);
};
tail -f /var/log/node/app.log
⚠️ 注意:
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('服务启动');
tail -f combined.log
✅ 支持:
适合:
| 场景 | 推荐方式 |
|---|---|
| 本地开发 | console.log + tail -f |
| 单台服务器 | systemd / PM2 |
| 生产环境 | systemd + Winston |
| 大规模 | ELK / Loki |
如果你愿意,可以告诉我:
我可以帮你定制一套完整监控方案。