温馨提示×

debian下golang日志怎调试

小樊
42
2026-10-01 06:46:09
栏目: 编程语言

在 Debian 下调试 Go(Golang)日志,通常可以从日志本身、运行方式、调试工具三个维度来做。下面按实用场景给你一套清晰的做法。


一、基础日志调试(代码层面)

1. 使用标准库 log

import "log"

log.SetFlags(log.LstdFlags | log.Lshortfile)
log.Println("debug info")
  • Lshortfile:显示文件名和行号(很关键)
  • 输出到 stderr,便于和系统日志区分

2. 使用 log/slog(Go 1.21+ 推荐)

import "log/slog"

logger := slog.New(slog.NewTextHandler(os.Stderr, &slog.HandlerOptions{
    Level: slog.LevelDebug,
}))
logger.Debug("debug message", "key", "value")

3. 第三方日志库

  • zap(Uber,性能好)
  • logrus(易用)
log.SetLevel(log.DebugLevel)

二、Debian 下运行调试

1. 前台运行看日志

go run main.go
# 或
./yourapp

2. 重定向日志

./yourapp > app.log 2>&1
tail -f app.log

3. systemd 服务调试(常见)

如果你用 systemd:

# /etc/systemd/system/yourapp.service
[Service]
ExecStart=/opt/yourapp/yourapp
StandardOutput=journal
StandardError=journal

查看日志:

journalctl -u yourapp -f
journalctl -u yourapp --since "5 min ago"

三、实时调试(不只是日志)

1. 用 Delve 调试器

sudo apt install delve
dlv debug main.go

常用命令:

break main.main
continue
print var

2. 加环境变量调试

GODEBUG=gcrace=1 ./yourapp
GODEBUG=schedtrace=1000 ./yourapp

四、常见调试技巧

✅ 打印调用栈

import "runtime/debug"
debug.PrintStack()

✅ HTTP 服务加 pprof

import _ "net/http/pprof"
go func() {
    http.ListenAndServe("localhost:6060", nil)
}()

✅ 区分环境

if os.Getenv("APP_ENV") == "dev" {
    logger.SetLevel(Debug)
}

五、推荐调试组合(Debian 实战)

场景 推荐
本地开发 go run + slog
服务器 systemd + journalctl
难复现问题 Delve
性能问题 pprof

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

  • 是 Web 服务 / CLI 工具 / 后台进程
  • 是否已经用 systemd
  • 日志打不出来还是看不懂

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

0 踩