在 Debian 上“没有 Node.js 日志”通常不是 Node.js 本身的问题,而是运行方式、日志去向、systemd 配置等原因造成的。下面按常见情况给你梳理一下。
Node.js 本身:
stdout(标准输出)stderr(标准错误)如果你没在代码里写:
fs.writeFileSync('app.log', ...)
或
console.log(...)
配合日志库(winston / pino / log4js),那本来就没有日志文件。
✅ 这是“正常行为”,不是 Debian 的问题。
node app.js 运行(前台)如果你是:
node app.js
日志会直接显示在终端里,不会保存。
关掉终端 → 日志就没了。
✅ 解决方式:
node app.js > app.log 2>&1
nohup / & 后台运行node app.js &
日志可能去了:
nohup.out✅ 推荐:
nohup node app.js > app.log 2>&1 &
如果你用:
systemctl start mynode
Node.js 日志 不会写文件,而是进入 journald
查看日志:
journalctl -u mynode.service
实时查看:
journalctl -u mynode.service -f
✅ 这是 Debian / Ubuntu 的标准做法
[Service]
ExecStart=/usr/bin/node /opt/app/app.js
[Service]
ExecStart=/usr/bin/node /opt/app/app.js
StandardOutput=journal
StandardError=journal
Restart=always
[Install]
WantedBy=multi-user.target
如果你用 PM2:
pm2 start app.js
日志在:
~/.pm2/logs/
查看:
pm2 logs
| 原因 | 说明 |
|---|---|
| Node 本身不写文件 | 只输出到终端 |
| 没用日志库 | 无文件日志 |
| systemd + 没看 journal | 日志在 journald |
| 后台运行没重定向 | 日志丢失 |
| 程序没报错 | 本来就没日志 |
✅ 用 systemd + journald
✅ 或 PM2
✅ 或 Node + winston 写文件
如果你愿意,可以告诉我:
node / pm2 / systemd)我可以直接帮你写一份正确可用的配置。