温馨提示×

如何查看Debian Go日志

小樊
36
2026-08-23 15:56:26
栏目: 编程语言

在 Debian 系统上查看 Go 应用的日志,取决于日志是写到哪里的。下面按常见场景给你一个完整说明。


一、查看 systemd 管理的 Go 服务日志(最常见)

如果 Go 程序是通过 systemd 启动的服务(如 /etc/systemd/system/xxx.service),日志通常由 journald 管理。

1️⃣ 查看实时日志

sudo journalctl -u 服务名 -f

例如:

sudo journalctl -u mygoapp -f

2️⃣ 查看本次启动后的日志

sudo journalctl -u 服务名 --since today

3️⃣ 查看指定时间范围

sudo journalctl -u 服务名 --since "2025-01-01 10:00" --until "2025-01-01 12:00"

4️⃣ 查看更详细的日志

sudo journalctl -u 服务名 -o verbose

二、查看 Go 程序直接输出的日志(stdout / stderr)

如果 Go 程序不是 systemd 服务,而是直接运行:

./mygoapp

日志通常会输出到:

  • 终端
  • 或被重定向到文件

常见重定向方式

./mygoapp > app.log 2>&1

查看日志:

tail -f app.log

三、查看 Go 程序写入的日志文件

很多 Go 程序会自己写日志文件,例如:

log.Println("start server")

或通过日志库(zap / logrus / slog)写入:

常见路径:

/var/log/myapp.log
/var/log/myapp/
$HOME/logs/
./logs/

查看方式:

tail -f /var/log/myapp.log

四、查看 syslog(部分 Go 程序会写)

如果 Go 程序使用 sysloglog/syslog

sudo tail -f /var/log/syslog

或(旧系统):

sudo tail -f /var/log/messages

五、Docker 中运行的 Go 程序

如果是 Docker 容器:

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

六、Go 程序没有日志怎么办?

1️⃣ 检查是否有日志配置

ps aux | grep mygoapp

2️⃣ 检查代码是否输出日志

如果你用的是:

  • fmt.Println → 输出到 stdout
  • log.Println → 输出到 stderr
  • slog.Info → 默认 stderr

3️⃣ 临时调试

strace -e write -p 进程PID

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

✅ 使用 systemd + journald
✅ 或使用日志库写入 /var/log/
✅ 不要只依赖 fmt.Println


八、我可以帮你更具体定位

你可以告诉我:

  1. Go 程序是 systemd 服务 / 直接运行 / Docker
  2. 使用的是 标准库 log / zap / logrus / slog
  3. Debian 版本(如 11 / 12)

我可以给你精确到命令级别的排查方案。

0