Debian 系统里“JS 日志缺失”通常不是单一原因,而是环境、服务配置、日志路径、权限或 systemd/stdout 行为共同导致的。下面按常见场景给你一个排查清单,并给出对应解决办法。
常见情况包括:
console.log / console.error下面重点讲 Debian + Node.js 服务日志缺失 的情况。
如果你用 systemd 管理 Node 服务:
# /etc/systemd/system/xxx.service
[Service]
ExecStart=/usr/bin/node /app/server.js
✅ 默认行为
console.log → systemd journal/var/log/xxx.log✅ 检查方式:
journalctl -u your-service-name -f
✅ 解决方案(推荐):
StandardOutput=append:/var/log/your-app/out.log
StandardError=append:/var/log/your-app/err.log
然后:
systemctl daemon-reload
systemctl restart your-service
Debian 默认 journal 可能不持久。
检查:
ls /var/log/journal
如果没有:
mkdir -p /var/log/journal
systemctl restart systemd-journald
Node 进程 无法写日志文件 时,日志会直接丢失。
检查:
ls -ld /var/log/your-app
修复:
mkdir -p /var/log/your-app
chown -R node:node /var/log/your-app
⚠️ 注意:
如果你用 PM2:
pm2 logs
pm2 logs app-name
检查配置:
pm2 show app-name
常见问题:
/dev/null如果进程 直接崩溃:
process.on('uncaughtException', e => {
console.error(e);
process.exit(1);
});
✅ 建议:
Restart=always如果你在 Docker 中运行 JS:
✅ 容器里:
docker logs 容器名
✅ 原因:
✅ 正确做法:
docker run -v /var/log/app:/app/logs ...
Debian 默认会轮转日志。
检查:
cat /etc/logrotate.d/your-app
常见问题:
# 1. 服务是否运行
systemctl status your-app
# 2. systemd 日志
journalctl -u your-app -n 100
# 3. 磁盘是否满
df -h
# 4. inode 是否满
df -i
# 5. 日志目录权限
ls -ld /var/log/your-app
# 6. Node 是否真的在写日志
strace -p $(pgrep node) -e write
✅ systemd + Node
[Service]
User=node
WorkingDirectory=/opt/app
ExecStart=/usr/bin/node index.js
StandardOutput=append:/var/log/app/out.log
StandardError=append:/var/log/app/err.log
Restart=always
✅ Node 内部
你可以直接贴出:
cat /etc/os-release)我可以一步一步帮你定位到具体哪一行配置导致日志消失。