温馨提示×

Ubuntu Nodejs日志如何定位

小樊
49
2026-08-31 08:43:38
栏目: 编程语言

Ubuntu 上定位 Node.js 日志,一般分几种常见场景。下面按排查思路 + 示例命令给你一个实用指南。


一、先确认 Node.js 应用“有没有在跑”

ps -ef | grep node

pgrep -a node

如果没跑,说明日志可能还没产生,或应用已挂掉。


二、常见 Node.js 日志来源

1️⃣ 应用自身打印的日志

Node.js 常见的日志方式:

  • console.log / console.error
  • winston / pino / log4js
  • 直接写文件

查找项目里的日志代码

grep -R "console.log" /path/to/project
grep -R "winston" /path/to/project

2️⃣ 应用日志文件(最常见)

常见路径:

/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

3️⃣ PM2 管理的 Node.js(非常常见)

✅ 查看列表:

pm2 list

✅ 查看日志:

pm2 logs
pm2 logs app-name

✅ 只看错误日志:

pm2 logs --err

✅ 查看日志路径:

pm2 info app-name

4️⃣ systemd 管理的 Node.js

如果 Node.js 是通过 systemd 启动的:

systemctl status your-node-service

查看日志:

journalctl -u your-node-service -f

查看历史日志:

journalctl -u your-node-service --since "2025-01-20"

5️⃣ Docker 容器中的 Node.js

docker ps
docker logs <container_id> -f

三、Ubuntu 系统级日志(报错兜底)

系统日志

tail -f /var/log/syslog

如果使用 systemd

journalctl -f

四、Node.js 崩溃 / 无日志的常见原因

❌ 1. stdout 被重定向

比如:

node app.js > /dev/null

解决:

node app.js >> app.log 2>&1

❌ 2. 未捕获的异常

process.on('uncaughtException', err => {
  console.error('Uncaught Exception:', err);
});

❌ 3. Promise 未 catch

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

六、我可以更具体帮你

你可以直接告诉我:

  • ✅ Node.js 是如何启动的?(PM2 / systemd / docker / 手动)
  • ✅ 有没有报错信息?
  • ✅ Ubuntu 版本?

我可以按你的实际环境给你 一步到位定位命令

0