温馨提示×

Golang日志Debian如何找

小樊
36
2026-07-27 11:54:53
栏目: 编程语言

Debian 系统里找 Golang(Go)程序产生的日志,一般取决于日志写到了哪里。下面按常见情况给你一个排查清单。


一、先确认:Go 程序把日志写到哪了?

1️⃣ 标准输出 / 标准错误(最常见)

很多 Go 程序直接用:

log.Println()
fmt.Println()

这些日志默认输出到:

  • stdout
  • stderr

如果是 systemd 服务

journalctl -u 你的服务名

查看实时日志:

journalctl -u 你的服务名 -f

查看某次启动的日志:

journalctl -u 你的服务名 --since today

这是 Debian + systemd 最常见的情况


2️⃣ 日志写到文件

如果 Go 代码里指定了文件:

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

常见路径:

/var/log/
/var/log/myapp/
/tmp/

查找:

ls /var/log | grep myapp

搜索最近修改的日志:

find /var/log -name "*.log" -mmin -10

二、Debian 系统日志位置速查

系统日志

/var/log/syslog
/var/log/messages   # 有些系统没有

查看:

tail -f /var/log/syslog

三、用 systemd 找 Go 程序日志(重点)

1️⃣ 查看服务名

systemctl list-units --type=service | grep myapp

2️⃣ 查看日志

journalctl -u myapp.service

3️⃣ 如果程序崩溃

journalctl -u myapp.service --no-pager | tail -n 50

四、Docker 里的 Go 程序(如果有)

docker logs 容器名
docker logs -f 容器名

五、找不到日志?快速排查方法

1️⃣ 看进程启动参数

ps aux | grep myapp

2️⃣ 看文件句柄

lsof -p 进程PID

3️⃣ 搜索最近修改的文件

find / -name "*.log" -mmin -5 2>/dev/null

六、常见 Go 日志库 & 默认行为

日志库 默认输出
log stderr
fmt stdout
zap 需配置
logrus 需配置

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

✅ 使用 systemd
✅ 日志输出到 stdout/stderr
✅ 用 journald 管理
✅ 不要自己写 /var/log/*.log(除非必要)


如果你愿意,可以把:

  • Go 程序是怎么启动的(systemd / docker / 手动)
  • 有没有用日志库
  • 服务名是什么

发出来,我可以帮你精确定位日志位置

0