在 Debian 上“Node.js 没有日志”通常不是 Node 本身的问题,而是运行方式 / 输出目标 / 服务管理导致的。下面按最常见原因逐一说明,并给出排查和解决办法。
Node.js 本身不会自动写日志文件,只会:
console.log → stdoutconsole.error → stderr如果你是直接运行:
node app.js
日志会显示在终端。一旦关闭终端或后台运行,就“看不见日志”了。
前台运行看日志:
node app.js
后台运行并保存日志:
node app.js > app.log 2>&1 &
在 Debian 上,Node 服务通常由 systemd 管理。
node app.js 有日志systemctl start mynode 后“没日志”日志在 journald,不在文件里。
journalctl -u your-service.service -f
[Unit]
Description=Node App
[Service]
ExecStart=/usr/bin/node /opt/app/app.js
WorkingDirectory=/opt/app
User=www-data
Restart=always
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
nohup / & 但没重定向nohup node app.js &
默认会写到:
nohup.out
如果当前目录不可写,就“没日志”。
nohup node app.js > app.log 2>&1 &
如果你用 PM2:
pm2 logs
日志在:
~/.pm2/logs/
例如:
journalctl -u your-service.service
或前台直接跑:
node app.js
有些框架(如 Winston / pino):
logger.level = 'error';
info 日志不会输出。
| 情况 | 日志在哪 |
|---|---|
| 直接运行 | 终端 |
> log 2>&1 |
文件 |
| systemd | journalctl |
| nohup | nohup.out |
| pm2 | ~/.pm2/logs |
如果你愿意,可以贴:
console.log我可以直接帮你定位是哪一类问题。