在 Ubuntu 上定位 Node.js 日志时,通常可以从应用自身日志、进程管理器日志、系统日志、容器日志这几个方向来查。下面按常见场景给你一个快速定位指南。
常见方式:
console.log / console.errorwinston、pino、bunyan、morgan(HTTP)如果代码里写了文件日志,比如:
const fs = require('fs');
fs.writeFileSync('/var/log/myapp/app.log', 'xxx');
那就直接去对应路径:
cat /var/log/myapp/app.log
tail -f /var/log/myapp/app.log
pm2 logs
只看某个应用:
pm2 logs app_name
~/.pm2/logs/
例如:
app-error.log
app-out.log
pm2 info app_name
journalctl -u your-node-service-name -f
journalctl -t node -f
tail -f /var/log/syslog
(Ubuntu 20.04+ 可能是 /var/log/syslog 或 journalctl)
docker logs container_id
docker logs -f container_id
docker-compose logs -f node
如果 Node 前面有 Nginx:
tail -f /var/log/nginx/access.log
tail -f /var/log/nginx/error.log
有些 Node 报错其实是 502 / 504,要从 Nginx 看。
process.on('uncaughtException', (err) => {
console.error('Uncaught Exception:', err);
});
process.on('unhandledRejection', (err) => {
console.error('Unhandled Rejection:', err);
});
dmesg | grep -i node
(OOM 被杀常见)
pm2 logs
journalctl -u xxx -f
docker logs xxx
/var/log/nginx/
ps aux | grep node
lsof -i :3000
netstat -tlnp | grep node
tail -f 日志文件
如果你愿意,可以把下面信息发我,我可以直接帮你精确定位:
node -vlsb_release -a我可以一步一步带你查 ✅