Debian 上 JS(JavaScript)日志为空,通常不是 JS 本身的问题,而是运行环境、日志配置或输出位置的问题。下面按常见场景给你一个排查清单。
(最常见)
可能原因:
✅ 快速自检:
ps aux | grep node
如果你的 JS 服务是用 systemd 启动的:
# /etc/systemd/system/xxx.service
[Service]
ExecStart=/usr/bin/node /app/server.js
那么:
console.log() 不会写入文件journalctl -u 服务名
✅ 查看日志:
journalctl -u your-service -f
✅ 想输出到文件:
StandardOutput=append:/var/log/app.log
StandardError=append:/var/log/app.err
然后:
systemctl daemon-reexec
systemctl restart your-service
fs.writeFileSync('/var/log/app.log', data)
检查:
ls -l /var/log/app.log
touch /var/log/app.log
chown node:node /var/log/app.log
✅ 建议:
/var/log/var/log/your-app/常见坑:
测试:
console.log('START')
throw new Error('test')
如果你用 PM2:
pm2 logs
或:
~/.pm2/logs/
如果为空:
pm2 restart app
pm2 flush # 清理旧日志
Docker 中:
查看:
docker logs 容器ID
✅ 正确做法:
docker logs -f 容器名
示例(winston):
new winston.transports.File({ filename: '/var/log/app.log' })
常见错误:
✅ 测试:
logger.info('test log')
JS 日志为空
│
├─ 是否用 systemd? ── journalctl -u 服务名
│
├─ 是否用 PM2? ── pm2 logs
│
├─ 是否 Docker? ── docker logs
│
├─ 是否写文件? ── ls /var/log/
│
└─ 是否真的执行了日志代码?
如果你愿意,可以把下面信息发我,我可以精确告诉你为什么是空的:
cat /etc/debian_version)我可以直接给你一套可用的日志配置示例。