温馨提示×

Golang日志Debian怎么查看

小樊
40
2026-07-27 10:04:03
栏目: 编程语言

在 Debian 上查看 Golang 程序产生的日志,取决于你的程序把日志输出到了哪里。下面按常见情况说明,基本都能覆盖 90% 的场景。


一、最常见:日志输出到 stdout / stderr(默认)

如果你没有特别配置日志输出路径,Go 程序默认日志会输出到:

  • fmt.Println
  • log.Println
  • log.Fatal

这些都会输出到 标准输出 / 标准错误

1️⃣ 前台运行

go run main.go

日志直接显示在终端。


2️⃣ 后台运行(nohup)

nohup ./myapp &

日志默认在:

nohup.out

查看:

cat nohup.out
tail -f nohup.out

3️⃣ systemd 服务(非常常见)

如果你用 systemd 管理 Go 程序:

sudo systemctl status myapp

查看完整日志:

sudo journalctl -u myapp -f

查看某段时间:

sudo journalctl -u myapp --since "2025-01-01" --until "2025-01-02"

这是 Debian / Ubuntu 最常见方式


二、日志写入到文件

1️⃣ 程序里指定了日志文件

例如:

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

查看:

cat /var/log/myapp.log
tail -f /var/log/myapp.log
less /var/log/myapp.log

2️⃣ 使用 zap / logrus / zerolog

这些日志库通常也会写文件,查看方式一样:

ls /var/log/

三、Docker 容器里的 Go 日志(如果你用 Docker)

查看容器日志

docker logs <container_id>
docker logs -f <container_id>

如果是 docker-compose:

docker-compose logs -f

四、快速排查步骤(推荐)

✅ Step 1:确认程序是不是在运行

ps aux | grep myapp

✅ Step 2:看是不是 systemd

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

✅ Step 3:看有没有日志文件

ls /var/log/

✅ Step 4:看 stdout / stderr

journalctl -f

五、常见坑

情况 原因
看不到日志 日志被重定向到文件
日志不实时 日志库有 buffer
journalctl 没日志 程序没用 systemd
权限不足 sudo

六、如果你愿意,我可以更精确帮你

你可以直接贴: 1️⃣ 你的 Go 日志代码
2️⃣ 启动方式(systemd / docker / 直接运行)
3️⃣ Debian 版本(cat /etc/os-release

我可以一步一步帮你定位 ✅

0