温馨提示×

golang日志debian存哪了

小樊
53
2026-09-13 04:39:15
栏目: 编程语言

在 Debian 系统上,Golang 程序本身不会自动把日志写到某个固定位置,日志存哪里完全取决于你的程序怎么写、以及怎么启动它。

下面分几种常见情况说明:


1️⃣ 程序里自己写日志文件

如果你在代码里这样写:

log.SetOutput(os.OpenFile("/var/log/myapp.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644))

那日志就在:

/var/log/myapp.log

(路径是你自己指定的)


2️⃣ 直接输出到 stdout / stderr(最常见)

很多 Go 程序只是:

log.Println("hello")
fmt.Println("xxx")

这种日志不会自动存文件,而是输出到:

  • 终端
  • 或被 systemd / supervisor 捕获

如果是 systemd 启动(最常见)

systemctl status your-service
journalctl -u your-service
journalctl -u your-service -f

日志实际由 systemd-journald 管理,默认在:

/var/log/journal/

(二进制格式,不能直接 cat)


3️⃣ 用 logrotate + 重定向

启动脚本常见写法:

./mygoapp >> /var/log/myapp.log 2>&1

日志就在:

/var/log/myapp.log

4️⃣ Docker 里跑的 Go 程序

日志默认在:

docker logs 容器名

实际位置:

/var/lib/docker/containers/...

5️⃣ 使用第三方日志库

如 zap / logrus / slog:

logger, _ := zap.NewProduction()

通常会写到:

  • stdout
  • 或你配置的 filename

✅ 快速排查方法

# 看你程序是怎么跑的
ps aux | grep 你的程序名

# 看是不是 systemd
systemctl list-units | grep 你的程序

# 看文件日志
ls -lh /var/log | grep 你的程序

如果你愿意,可以把:

  • 启动方式(systemd / 脚本 / docker)
  • 或 Go 日志相关代码

发出来,我可以精确告诉你日志在哪。

0 踩