温馨提示×

Debian下怎么看Golang日志

小樊
39
2026-07-27 11:08:45
栏目: 编程语言

在 Debian 下查看 Golang 程序的日志,取决于日志写在哪里。下面按常见场景给你一个比较完整的排查思路。


一、Golang 日志常见输出方式

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

很多 Golang 程序直接写到:

  • fmt.Println
  • log.Println
  • os.Stdout / os.Stderr

对应位置:

  • 前台运行:直接显示在终端
  • systemd 服务:写入 journal
  • Docker:写入容器日志

二、如果你用 systemd 运行 Golang 程序(最常见)

查看日志

journalctl -u 服务名

实时查看:

journalctl -u 服务名 -f

示例:

journalctl -u mygoapp -f

查看本次启动后的日志

journalctl -u mygoapp --since today

三、Golang 自己写日志文件

如果你的程序类似这样:

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

查看日志

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

⚠️ 注意权限:

sudo tail -f /var/log/myapp.log

四、Docker 运行的 Golang 程序

查看日志

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

如果用了 docker-compose:

docker-compose logs -f

五、如果你不知道日志在哪

1️⃣ 查看进程启动参数

ps aux | grep your_program

2️⃣ 查看进程打开了哪些文件

ls -l /proc/进程PID/fd

3️⃣ 搜索常见日志目录

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

六、Golang 程序没日志怎么办?

✅ 推荐做法

使用成熟日志库:

  • log/slog(Go 1.21+ 推荐)
  • logrus
  • zap

示例(slog 写文件 + stdout):

logger := slog.New(slog.NewTextHandler(os.Stdout, nil))
logger.Info("hello debian")

七、快速排查清单 ✅

场景 查看方式
systemd journalctl -u 服务名
前台运行 终端输出
日志文件 /var/log/*.log
Docker docker logs
不确定 ps + /proc/PID/fd

如果你愿意,可以把:

  • Golang 程序怎么启动的(systemd / docker / 手动)
  • 是否使用日志库

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

0