在 Debian 系统上定位 Node.js 日志和错误,通常可以从应用日志、系统日志、进程管理工具、运行时调试几个层面入手。下面按常见场景给你一套实用方法。
不同运行方式,日志位置完全不同:
node app.js
node app.js > app.log 2>&1
日志在 app.log
pm2 logs
pm2 logs app-name
pm2 info app-name # 看错误日志路径
默认日志目录:
~/.pm2/logs/
systemctl status your-node-service
journalctl -u your-node-service -f
journalctl -u your-node-service --since "1 hour ago"
sudo journalctl -xe
sudo journalctl -u node-app.service
/var/log/syslog
/var/log/messages
process.on('uncaughtException', (err) => {
console.error('Uncaught Exception:', err);
});
process.on('unhandledRejection', (reason) => {
console.error('Unhandled Rejection:', reason);
});
node --trace-warnings app.js
node --inspect app.js
try {
// code
} catch (err) {
console.error(err.stack);
}
sudo netstat -tulnp | grep 3000
# 或
sudo lsof -i :3000
Error: EACCES
→ 不要用 root 跑 Node,或改端口 / 目录权限
winstonpinologrotate# 1. 看进程
ps aux | grep node
# 2. 看端口
sudo lsof -i :3000
# 3. 看 systemd
journalctl -u node-app -f
# 4. 看 PM2
pm2 logs
# 5. 手动跑一次
node app.js
如果你愿意,可以告诉我:
我可以直接帮你精准定位。