温馨提示×

linux下golang日志在哪

小樊
45
2026-10-11 09:53:57
栏目: 编程语言

在 Linux 下,Go(Golang)程序本身的“日志在哪”取决于程序怎么写的,Go 语言本身不会自动产生系统日志。下面分几种常见情况说明:


一、Go 标准库 log 的日志去哪了?

如果你用的是:

log.Println("hello")

默认是输出到 标准错误(stderr)。

常见情况

  1. 前台运行
./myapp

日志直接打印在终端。

  1. 后台运行(nohup / &)
nohup ./myapp > app.log 2>&1 &

日志在:

app.log
  1. systemd 服务 如果你用 systemd 启动:
[Service]
ExecStart=/opt/myapp

日志不在文件里,而在 journald:

journalctl -u myapp.service

二、常用日志库(如 zap / logrus / zerolog)

这些库默认也是输出到 stdout / stderr,除非你显式配置:

logger, _ := zap.NewProduction()

生产模式会输出 JSON 到 stderr

✅ 想写文件,需要自己配置:

writer := zapcore.AddSync(&lumberjack.Logger{
    Filename:   "/var/log/myapp/app.log",
    MaxSize:    10,
    MaxBackups: 5,
})

三、如果你在问“Go 安装/运行日志在哪”

  • Go 编译器本身不写日志
  • go build / go run 只输出到终端
  • 没有类似 /var/log/go.log 的东西

四、常见日志位置总结

场景 日志位置
终端运行 终端
nohup nohup.out 或你重定向的文件
systemd journalctl -u 服务名
Docker docker logs 容器名
自己写文件 你在代码里指定的路径

五、快速排查建议

# 找进程
ps aux | grep myapp

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

# systemd
journalctl -u myapp -f

如果你愿意,可以告诉我:

  • 你是 自己写的 Go 程序 还是 别人的程序
  • 是怎么运行的(终端 / systemd / Docker)
  • 用的什么日志库

我可以帮你精确定位日志文件。

0 踩