温馨提示×

linux js日志丢失怎么找回

小樊
44
2026-10-20 02:41:17
栏目: 编程语言

在 Linux 上 JS 日志丢失能否找回,取决于日志是怎么产生的、存在哪里、是否被覆盖或删除。下面按常见情况给你一套排查与恢复思路。


一、先确认:日志“丢”的是哪种情况

  1. 进程没写日志(代码或配置问题)
  2. 日志写到了文件,但文件被删/轮转/覆盖
  3. 日志输出到 stdout/stderr,被系统或容器吞了
  4. 磁盘满了,日志没写进去
  5. 被 logrotate 删了

二、常见 JS 日志场景 & 找回方式

1️⃣ Node.js 直接写文件(如 winston / fs.appendFile)

文件还在但内容不对

ls -l /path/to/log/
du -sh /path/to/log/*

文件被误删(进程还在)

# 找到 node 进程
ps aux | grep node

# 查看打开的文件
ls -l /proc/<pid>/fd | grep log

如果能看到 deleted 文件:

cp /proc/<pid>/fd/<fd> /tmp/recover.log

✅ 这是最有可能找回的情况


2️⃣ 日志输出到 stdout / stderr(PM2、Docker、systemd)

PM2

pm2 logs
pm2 flush   # ⚠️ 会清空,别乱用

日志一般在:

~/.pm2/logs/

Docker

docker logs <container>

或:

/var/lib/docker/containers/<id>/*-json.log

systemd

journalctl -u your-service.service --since "2024-01-01"

3️⃣ 日志被 logrotate 删除

检查:

cat /etc/logrotate.d/*

如果已压缩:

ls /var/log/*.gz
zcat /var/log/app.log.1.gz

4️⃣ 磁盘满导致日志没写

df -h

解决:

journalctl --vacuum-size=100M

或清理旧日志文件


5️⃣ 文件被彻底删除(进程已退出)

可尝试恢复工具(成功率看运气):

# ext4
sudo extundelete /dev/sda1 --restore-file /path/log

# 通用
sudo photorec /dev/sda1

⚠️ 停止写入磁盘,立即操作


三、以后怎么防止 JS 日志丢失(重要)

✅ 用成熟日志库

  • winston
  • pino
  • bunyan

✅ 同时输出到:

  • 文件
  • stdout
  • 远程(ELK / Loki)

✅ 配置 logrotate

/var/log/app/*.log {
  daily
  rotate 14
  compress
  missingok
}

✅ 容器环境务必:

docker logs + 挂载 volume

四、如果你愿意,我可以更精准帮你

你可以补充:

  1. 用的是 Node / 浏览器 / Electron?
  2. 日志是 文件 / PM2 / Docker / systemd?
  3. 是 突然没日志 还是 文件消失?
  4. Linux 发行版 & 文件系统(ext4 / xfs)?

我可以直接给你对应恢复命令。

0 踩