Debian 上 Node.js 日志“丢失”通常不是真的被删除了,而是日志没有写到你以为的地方,或者进程退出/重启导致缓冲丢失。下面按最常见原因给你一个排查清单。
console.log,但标准输出没被捕获很多部署方式是:
systemd 服务nohup node app.js &如果你只是:
console.log('something')
那日志实际在:
app.log 文件✅ 查看方式:
journalctl -u your-node-service
或
pm2 logs
Debian + systemd 默认:
查看:
journalctl -u node.service
如果为空,检查 service 文件:
[Service]
StandardOutput=journal
StandardError=journal
并确保:
sudo systemctl restart systemd-journald
例如:
fs.appendFile('/var/log/node/app.log', data)
常见问题:
/var/log/node 不存在✅ 检查:
ls -ld /var/log/node
sudo -u node touch /var/log/node/test
Node 是异步写入,如果:
process.exit()缓冲区里的日志会丢失
✅ 解决:
process.exit(0) 强制退出PM2 默认有日志,但:
~/.pm2/logspm2 delete查看:
pm2 logs
ls ~/.pm2/logs
在容器里:
✅ 正确方式:
const winston = require('winston')
logger.add(new winston.transports.File({ filename: 'app.log' }))
[Service]
ExecStart=/usr/bin/node /opt/app/index.js
StandardOutput=append:/var/log/node/app.log
StandardError=append:/var/log/node/error.log
你可以回答这几个问题,我可以精确定位:
console.log 还是写文件?cat /etc/os-release)我可以给你一份针对你环境的配置。