温馨提示×

怎样调试debian golang日志

小樊
38
2026-10-18 20:02:17
栏目: 编程语言

在 Debian 上调试 Golang 程序的日志,通常可以从日志本身、运行方式、系统环境、工具链几个层面来做。下面按常见场景给你一个实用指南。


一、先确认 Golang 运行环境(Debian)

go version
go env

重点关注:

  • GOPATH
  • GOROOT
  • GOOS=linux
  • CGO_ENABLED(某些库依赖 C)

如果是服务程序,确认是否用了 systemd:

systemctl status your-service
journalctl -u your-service -f

二、基础日志调试方法

1. 使用标准库 log(最常见)

import "log"

log.SetFlags(log.LstdFlags | log.Lshortfile)
log.Println("debug info")

运行中查看:

./yourapp 2>&1 | tee debug.log

2. 输出到文件 + 实时查看

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

Debian 下实时看:

tail -f /var/log/yourapp.log

三、使用更强大的日志库(推荐)

logrus

import "github.com/sirupsen/logrus"

logrus.SetLevel(logrus.DebugLevel)
logrus.WithField("module", "auth").Debug("login start")

zap(高性能)

logger, _ := zap.NewDevelopment()
logger.Debug("debug message")

四、在 Debian 上调试日志“看不到”的问题

1. systemd 吞日志

如果你用 systemd 启动:

[Service]
StandardOutput=journal
StandardError=journal

查看:

journalctl -u yourapp -n 100 --no-pager
journalctl -f -u yourapp

2. 权限问题(/var/log 写不了)

ls -ld /var/log
id youruser

解决:

  • 改目录权限
  • 或写 /tmp/yourapp.log

3. 时区不对导致日志时间混乱

Debian:

timedatectl

Go 中显式设置:

time.Local = time.UTC

五、用 Delve 调试(不只是日志)

sudo apt install delve
dlv debug ./main.go

或 attach:

dlv attach <pid>

六、常见调试套路总结

✅ 加 Lshortfile
✅ 用 DebugLevel
✅ journalctl -f
✅ 写到文件 tail -f
✅ Delve 看运行时状态


如果你愿意,可以告诉我:

  • 是 CLI / Web / 后台服务?
  • 用没用 systemd / docker?
  • 日志“看不到”还是“内容不对”?

我可以直接给你一套针对你项目的调试方案。

0 踩