Debian 上“JS 日志丢失”通常不是 JS 语言本身的问题,而是运行环境、日志系统或配置导致的。下面按常见原因分类说明,并给出排查思路。
如果你的 JS 程序(Node.js)是通过 systemd service 运行的:
journaldconsole.log 在 systemd 下可能只进 journal,不写文件检查:
journalctl -u your-service.service --no-pager
是否持久化:
ls /var/log/journal
如果没有,说明是易失日志。
常见于:
> /dev/null 2>&1例如:
node app.js > /dev/null 2>&1 &
Node.js 在:
pm2nohupforever情况下:
Debian 默认有 logrotate:
检查:
lsof | grep deleted
Node 是异步写日志:
console.log 不一定立即落盘SIGKILL、OOM、Docker stop 会丢日志如果你在 Debian 上跑容器:
/var/log# 1. 是否是 systemd
ps -p 1 -o comm=
# 2. 服务日志
journalctl -u <service>
# 3. 是否有 deleted 日志
lsof | grep deleted
# 4. 启动命令
systemctl cat <service>
# 5. 日志目录权限
ls -ld /var/log/your-app
✅ 用日志库而不是 console.log
winstonpino✅ 明确写文件:
logger.add(new transports.File({ filename: '/var/log/app/app.log' }))
✅ systemd 服务示例:
[Service]
ExecStart=/usr/bin/node /opt/app/app.js
StandardOutput=append:/var/log/app/app.log
StandardError=append:/var/log/app/error.log
✅ 配置 logrotate:
/var/log/app/*.log {
daily
rotate 7
compress
copytruncate
}
你可以告诉我:
我可以直接帮你定位是哪一种“丢失”。