温馨提示×

golang日志在linux哪存放

小樊
39
2026-10-20 02:13:09
栏目: 编程语言

在 Linux 上,Golang 程序本身并不会自动把日志写到某个固定位置,日志存放在哪里,完全取决于程序自己怎么写,或者你是怎么运行它的。下面分几种常见情况说明:


1️⃣ 程序自己写日志文件(最常见)

如果代码里类似这样:

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

那日志就在:

/var/log/myapp.log

(路径是开发者自己定义的,不一定在 /var/log)


2️⃣ 输出到标准输出(stdout / stderr)

很多 Go 服务(尤其是 Docker / Kubernetes)只写:

log.Println("hello")

这种情况下:

直接运行

日志会打印到终端

用 nohup 运行

nohup ./myapp &

日志在:

nohup.out

(在当前目录)

用 systemd 运行(非常常见)

[Service]
ExecStart=/opt/myapp/myapp

日志位置:

journalctl -u myapp.service

或者:

journalctl -u myapp

3️⃣ 使用日志库(zap / logrus / slog)

这些库通常也是你配置路径,例如:

zap.NewProduction()

默认输出到 stdout / stderr

如果配置了:

&lumberjack.Logger{
    Filename: "/var/log/myapp/access.log",
}

那就在你配置的文件里。


4️⃣ Docker 容器里的 Go 日志

如果 Go 程序在 Docker 里:

docker logs 容器名

日志一般在:

/var/lib/docker/containers/<容器ID>/<容器ID>-json.log

5️⃣ 快速定位你自己的 Go 日志

你可以这样找:

# 搜常见日志目录
ls -lat /var/log | head

# 找进程打开了哪些文件
lsof -p $(pidof myapp)

# 看程序启动命令
ps -ef | grep myapp

✅ 总结一句话

Go 日志没有统一位置,写在哪完全看你程序或运行方式

如果你愿意,可以把:

  • 启动方式(直接跑 / systemd / Docker)
  • 或一段 Go 日志代码

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

0 踩