Linux 上 JS(Node.js / 前端构建 / 容器里的 JS 服务)日志“丢失”,通常不是真的被删了,而是输出位置、缓冲、重定向或权限导致你“看不到”。下面按最常见原因逐条说明。
很多 JS 程序(尤其是 Node / Docker):
console.logxxx.log 文件 → 当然没有✅ 正确做法:
node app.js > app.log 2>&1
或 Docker:
docker logs 容器名
Node.js 在非 TTY 环境(cron / systemd / docker)中:
console.log 是 块缓冲✅ 解决:
node --no-deprecation --stack-trace-limit=50 app.js
或强制不缓冲:
stdbuf -oL -eL node app.js
比如:
process.exit()✅ 检查:
dmesg | grep -i kill
journalctl -u your-service
JS 写日志时:
✅ 检查:
ls -l /var/log/your-app
whoami
Linux 默认:
/var/log/*.log 会被 rotatexxx.log.1.gz✅ 查历史:
ls /var/log | grep your-app
zcat /var/log/your-app.log.1.gz
Docker 默认 json-file,但:
✅ 查看:
docker inspect 容器 | grep LogConfig
如果没挂载 volume:
docker run -v /host/log:/app/log ...
例如:
✅ 自查:
logger.info('test') // 立刻看文件
✅ 建议:
你可以按顺序查:
docker logs / journalctlconsole.logstdbuf)如果你愿意,可以告诉我:
console.log / winston / pino)我可以直接帮你定位是哪一条。