在 Ubuntu 上,Node.js 本身的日志位置并不固定,主要取决于你怎么运行 Node.js 程序以及是否使用了日志库或系统服务。下面按常见情况说明:
systemd 运行(最常见,推荐)如果你用 systemd 管理 Node.js 服务(如 pm2、nest、node app.js 写成 service):
journalctl -u 你的服务名
例如:
journalctl -u my-node-app
journalctl -u my-node-app -f # 实时查看
/var/log/journal/
(二进制格式,不能直接 cat)
~/.pm2/logs/
示例:
~/.pm2/logs/app-out.log
~/.pm2/logs/app-error.log
pm2 logs
pm2 logs app
docker logs 容器名
docker logs -f 容器名
/var/lib/docker/containers/
很多 Node.js 程序用 winston、pino、fs.writeFile 等:
常见路径:
/var/log/yourapp/
./logs/
/home/user/app/logs/
你可以在代码里搜:
winston
pino
fs.appendFile
fs.writeFile
或直接:
grep -R "writeFile" .
如果是 Nginx 转发到 Node:
/var/log/nginx/access.log
/var/log/nginx/error.log
/var/log/syslog
/var/log/kern.log
例如 Node 被系统杀掉:
grep -i "node" /var/log/syslog
# 看 Node 进程
ps aux | grep node
# 看监听端口
ss -lntp | grep node
# 看系统日志
journalctl -xe
如果你能告诉我:
我可以精确告诉你日志在哪。