在 Debian 上定位 Node.js 日志和错误,通常可以从应用日志、系统日志、进程管理工具、运行时错误几个层面入手。下面按常见场景给你一个实战清单。
不同运行方式,日志位置完全不同:
node app.js
stderrpm2 logs
pm2 logs app_name
pm2 logs --err # 只看错误
日志默认在:
~/.pm2/logs/
journalctl -u your-node-service
journalctl -u your-node-service -f # 实时
journalctl -u your-node-service -p err
看代码里是怎么写的:
console.log / console.errorwinston / pino / log4js
/var/log/yourapp/
./logs/
快速搜日志文件:
find / -name "*.log" 2>/dev/null | grep node
tail -f /var/log/syslog
(部分新系统用 journald)
dmesg | grep -i "killed process"
journalctl | grep -i "out of memory"
node app.js 2> error.log
cat error.log
重点看:
Error:at Object.<anonymous>errnoDEBUG=* node app.js
NODE_DEBUG=http,net node app.js
确保有:
process.on('uncaughtException', e => {
console.error(e);
});
process.on('unhandledRejection', e => {
console.error(e);
});
| 现象 | 可能原因 |
|---|---|
| EADDRINUSE | 端口被占用 |
| ENOENT | 文件路径错 |
| Cannot find module | 依赖没装 |
| 进程自动退出 | OOM / 未捕获异常 |
| 无日志 | 输出被重定向 |
pm2 logs 或 journalctl -uError / Exception / EADDRINUSEstrace 或 node --inspect 深入如果你愿意,可以把: