温馨提示×

linux下golang日志在哪存

小樊
41
2026-10-05 11:54:12
栏目: 编程语言

在 Linux 下,Golang 程序本身的日志存放位置并不是由 Go 语言规定的,而是由你的程序代码或使用的日志库决定。下面分几种常见情况说明:


一、标准库 log(不指定文件时)

如果你用的是:

log.Println("hello")

默认位置

  • 输出到标准输出(stdout)
  • 如果你在终端直接运行:
    ./app
    
    日志会打印在当前终端

重定向到文件

./app > app.log 2>&1

日志就保存在:

当前目录/app.log

二、使用 log 指定日志文件

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

日志位置由你写死决定,例如:

/var/log/myapp.log

三、常见 Go 日志库

1. zap(uber)

zap.NewProduction()

默认输出到 stderr

常见配置:

&zapcore.FileWriter{
    Filename: "/var/log/app/app.log",
}

2. logrus

log.SetOutput(os.Stdout)

或:

file, _ := os.OpenFile("/var/log/app.log", ...)
log.SetOutput(file)

3. 系统服务(systemd)

如果你用 systemd 启动:

[Service]
ExecStart=/usr/local/bin/app

日志位置是:

journalctl -u yourapp.service

或:

/var/log/journal/

四、常见 Linux 日志目录约定

场景 路径
系统服务日志 /var/log/
自定义应用 /var/log/yourapp/
Docker 容器 docker logs 容器名
systemd journalctl

五、如何确认你的 Go 程序日志在哪?

  1. 看代码
    • 是否设置了 log.SetOutput
  2. 看启动方式
    • 是否重定向 > log
  3. 看服务配置
    • systemd / supervisor / docker

如果你愿意,可以把你的启动方式或日志代码贴出来,我可以直接告诉你日志具体在哪。

0 踩