Debian 系统中 Node.js 本身默认不会产生系统级别的日志,这和 Debian 的设计理念以及 Node.js 的运行方式有关。下面分几点说明原因,以及怎么才能看到日志。
Node.js 不会自动写 /var/log/nodejs.log 这类文件,原因很简单:
对比:
| 软件 | 是否自动写日志 |
|---|---|
| Nginx | ✅ 默认写 /var/log/nginx/ |
| Apache | ✅ |
| MySQL | ✅ |
| Node.js(裸运行) | ❌ |
如果你只是手动运行:
node app.js
那么:
✅ 只有当你 显式使用 systemd / pm2 / docker 时,才会有日志。
如果 Node.js 是通过 systemd 服务运行的:
systemctl status your-node-service
journalctl -u your-node-service
日志在 journald,而不是 /var/log/nodejs.log。
Node.js 默认:
console.log('hello');
输出到 stdout,不会自动落盘。
如果你用 pm2:
pm2 logs
或:
~/.pm2/logs/
错误示例:
[Service]
ExecStart=/usr/bin/node /app/app.js
✅ 正确示例(推荐):
[Service]
ExecStart=/usr/bin/node /app/app.js
StandardOutput=journal
StandardError=journal
[Unit]
Description=Node.js App
[Service]
ExecStart=/usr/bin/node /opt/app/app.js
Restart=always
User=node
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
查看日志:
journalctl -u your-service -f
npm install -g pm2
pm2 start app.js
pm2 logs
const fs = require('fs');
setInterval(() => {
fs.appendFileSync('/var/log/node/app.log', new Date() + '\n');
}, 5000);
⚠️ 注意权限。
Debian 没有 Node.js 日志,是因为 Node.js 默认不写日志,而不是 Debian 有问题。
如果你愿意,可以把你的情况贴出来,我可以帮你判断: