温馨提示×

Debian怎么看Golang日志

小樊
43
2026-07-27 10:57:55
栏目: 编程语言

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


一、Golang 程序直接输出到标准输出(最常见)

如果你是这样启动的:

./myapp

或 systemd 服务里没有重定向日志,那日志通常输出到:

1️⃣ 前台运行

直接在终端里看即可。

2️⃣ 后台运行

./myapp > app.log 2>&1 &

查看:

tail -f app.log

二、使用 systemd 管理的 Golang 服务(最常见生产环境)

1️⃣ 查看日志(推荐)

sudo journalctl -u your-service-name

实时查看:

sudo journalctl -u your-service-name -f

只看最近 100 行:

sudo journalctl -u your-service-name -n 100

2️⃣ 查看 systemd 服务名

systemctl list-units --type=service

三、Golang 自己写日志文件

如果代码里类似这样:

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

查看方式:

tail -f /var/log/myapp.log

或:

less /var/log/myapp.log

四、使用第三方日志库(zap / logrus / zerolog)

特点

  • 一般都会写文件
  • 或输出到 stdout(被 systemd 接管)

查看方式

优先看 systemd 日志

journalctl -u your-service-name

✅ 如果配置了文件路径:

tail -f /path/to/log.json

五、Docker 里运行的 Golang 程序

docker logs 容器名

实时:

docker logs -f 容器名

六、常用排查命令总结

# 查看程序是否在运行
ps aux | grep myapp

# 查看程序打开了哪些文件
lsof -p PID

# 查看程序输出到哪里
strace -e write -p PID

七、快速判断日志在哪(实用技巧)

1️⃣ 看 systemd 服务文件

systemctl cat your-service-name

重点看:

ExecStart=...
StandardOutput=
StandardError=

如果没有重定向,日志就在 journalctl


八、建议的最佳实践 ✅

生产环境

  • 日志输出到 stdout
  • 用 systemd / docker 管理
  • 不要自己写文件(除非有日志切割需求)

日志切割

sudo apt install logrotate

如果你愿意,可以把下面信息发我,我可以直接告诉你日志在哪

  • 是 systemd 服务吗?
  • 是裸机 / Docker / K8s?
  • 有没有贴一段 Go 的日志初始化代码?

0