在 Ubuntu 上 Node.js 程序“日志为空”通常不是 Node 本身的问题,而是日志写到哪里、谁来收集、权限是否足够这几件事没对齐。下面按最常见原因逐一说明。
console.log,但:
systemd 启动 → 日志在 journal,不在文件nohup / & → 标准输出没重定向transportsNODE_ENV=production 时关了 console)✅ 检查:
ps aux | grep node
看启动命令有没有 > log.txt 2>&1
如果你是通过:
systemctl start mynode
那 默认没有日志文件
journalctl -u mynode.service -f
在 my.service 中:
StandardOutput=append:/var/log/node/app.log
StandardError=append:/var/log/node/err.log
并确保目录存在:
sudo mkdir -p /var/log/node
sudo chown -R youruser:youruser /var/log/node
/var/log 非 root 不可写✅ 修复:
sudo chown -R $USER:$USER /var/log/myapp
sudo chmod 755 /var/log/myapp
systemctl status 显示 code=exited✅ 查看真实错误:
journalctl -u mynode.service --no-pager
或直接前台运行:
node app.js
PM2 默认日志在:
~/.pm2/logs/
查看:
pm2 logs
清空或丢失的常见原因:
pm2 deletepm2 save如果你在 Docker 里跑 Node:
docker logs <container>
# 1. 是否在运行
ps aux | grep node
# 2. systemd 日志
journalctl -u your-service -f
# 3. 文件权限
ls -l /var/log/yourlog
# 4. 手动运行测试
node app.js
如果你愿意,可以贴出:
service 文件或启动命令我可以直接帮你定位是哪一步导致“日志为空”。