在 Ubuntu 上定位 Node.js 日志,一般分几种常见场景。下面按排查思路 + 示例命令给你一个实用指南。
ps -ef | grep node
或
pgrep -a node
如果没跑,说明日志可能还没产生,或应用已挂掉。
Node.js 常见的日志方式:
console.log / console.errorwinston / pino / log4jsgrep -R "console.log" /path/to/project
grep -R "winston" /path/to/project
常见路径:
/path/to/project/logs/
/path/to/project/log/
查找最近修改的日志文件:
find /path/to/project -name "*.log" -type f -printf "%T@ %p\n" | sort -n | tail -10
查看日志:
tail -f app.log
✅ 查看列表:
pm2 list
✅ 查看日志:
pm2 logs
pm2 logs app-name
✅ 只看错误日志:
pm2 logs --err
✅ 查看日志路径:
pm2 info app-name
如果 Node.js 是通过 systemd 启动的:
systemctl status your-node-service
查看日志:
journalctl -u your-node-service -f
查看历史日志:
journalctl -u your-node-service --since "2025-01-20"
docker ps
docker logs <container_id> -f
tail -f /var/log/syslog
journalctl -f
比如:
node app.js > /dev/null
解决:
node app.js >> app.log 2>&1
process.on('uncaughtException', err => {
console.error('Uncaught Exception:', err);
});
process.on('unhandledRejection', err => {
console.error('Unhandled Rejection:', err);
});
# 1. 找到进程
ps -ef | grep node
# 2. 是否 PM2
pm2 list
# 3. 是否 systemd
systemctl list-units | grep node
# 4. 查看系统日志
journalctl -f
你可以直接告诉我:
我可以按你的实际环境给你 一步到位定位命令。