在 Ubuntu 上排查 Node.js 日志,通常分 “日志在哪里” 和 “怎么搜” 两部分。下面按常见场景给你总结。
如果你直接运行:
node app.js
日志就在终端里,一般用:
node app.js 2>&1 | tee app.log
把日志保存下来。
pm2 logs
pm2 logs app-name
pm2 logs --lines 200
查日志文件:
~/.pm2/logs/
如果是:
systemctl status node
或
systemctl status my-node-app
日志在:
journalctl -u my-node-app
journalctl -u my-node-app -f # 实时
journalctl -u my-node-app --since "2024-01-01 00:00"
docker logs container_name
docker logs -f container_name
grep "Error" app.log
grep -i "timeout" app.log
grep -C 5 "Exception" app.log # 上下5行
tail -f app.log | grep "ERROR"
grep "2024-06-01 10:" app.log
journalctl -u my-node-app | grep "Error"
journalctl -u my-node-app --since "1 hour ago" | grep "500"
grep -r "ECONNRESET" /var/log/node/
const fs = require('fs');
const logStream = fs.createWriteStream('app.log', { flags: 'a' });
console.log = (...args) => logStream.write(args.join(' ') + '\n');
或用:
winstonpinolog4jsError / Exception / Timeout / 500tail -f 复现问题如果你愿意,可以告诉我:
我可以给你精确命令。