温馨提示×

golang日志在linux存哪里

小樊
39
2026-10-14 08:50:05
栏目: 编程语言

在 Linux 上,Golang 程序本身的日志并没有“固定存放位置”,取决于你(或程序)怎么写日志。下面分情况说明:


一、Go 程序默认日志在哪里?

1️⃣ 使用标准库 log

log.Println("hello")
  • 默认输出到:标准错误(stderr)
  • 如果直接运行:
./app

日志会直接打印在终端

  • 如果后台运行:
./app > app.log 2>&1 &

日志在:

当前目录/app.log

✅ Go 不自动写文件,也不像 Java 有固定日志目录


二、常见 Linux 日志存放位置

2️⃣ 系统服务(systemd)

如果 Go 程序是用 systemd 管理的:

systemctl status yourapp
journalctl -u yourapp

✅ 日志在:

journalctl(systemd journal)

查看文件位置(一般情况):

/var/log/journal/

3️⃣ 手动写日志文件(最常见)

很多 Go 项目会自己写:

log.SetOutput(os.OpenFile("/var/log/myapp/app.log", ...))

常见路径:

/var/log/myapp/
/var/log/myapp.log
/data/logs/myapp/

✅ 这是“你代码决定放哪”


三、常见 Go 日志库默认位置

日志库 默认位置
log stderr
zap 看你配置
logrus 看你配置
zerolog 看你配置

⚠️ 没有默认文件,必须自己指定


四、如果你“不知道日志去哪了”

排查方法

# 看进程
ps aux | grep yourapp

# 看打开的文件
lsof -p <pid>

# 看 systemd
journalctl -u yourapp -f

# 全盘搜日志
find / -name "*.log" 2>/dev/null | grep app

五、推荐做法(生产环境)

/var/log/<appname>/app.log

配合:

  • logrotate
  • systemd
  • zap / logrus

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

  • 你是怎么运行 Go 程序的(终端 / nohup / systemd)
  • 用的什么日志库

我可以直接告诉你日志现在在哪、该怎么配。

0 踩