温馨提示×

debian golang日志级别怎么改

小樊
34
2026-09-25 10:59:49
栏目: 编程语言

在 Debian 上,“改 Golang 日志级别”通常取决于你用的是哪个日志库,而不是操作系统本身(Debian 只是运行环境)。下面按常见情况说明。


一、使用标准库 log(最简单)

标准库 log 没有日志级别概念(只有 Print / Fatal / Panic)。

做法:自己控制

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

✅ 想“改级别”只能:

  • 用环境变量控制是否打印
  • 或换用第三方日志库

二、使用 logrus(非常常见)

1️⃣ 代码中设置

import "github.com/sirupsen/logrus"

func main() {
    logrus.SetLevel(logrus.DebugLevel)
}

级别:

  • PanicLevel
  • FatalLevel
  • ErrorLevel
  • WarnLevel
  • InfoLevel
  • DebugLevel
  • TraceLevel

2️⃣ 通过环境变量(Debian 常用)

level := os.Getenv("LOG_LEVEL")
l, err := logrus.ParseLevel(level)
if err == nil {
    logrus.SetLevel(l)
}

运行:

LOG_LEVEL=debug ./yourapp

三、使用 zap(Uber,性能高)

1️⃣ 开发环境

logger, _ := zap.NewDevelopment()

2️⃣ 生产环境

logger, _ := zap.NewProduction()

3️⃣ 自定义级别

cfg := zap.NewProductionConfig()
cfg.Level = zap.NewAtomicLevelAt(zap.DebugLevel)
logger, _ := cfg.Build()

环境变量方式:

cfg := zap.NewProductionConfig()
cfg.Level.UnmarshalText([]byte(os.Getenv("LOG_LEVEL")))

四、使用 slog(Go 1.21+ 官方结构化日志)

基本用法

logger := slog.New(slog.NewTextHandler(os.Stdout, &slog.HandlerOptions{
    Level: slog.LevelDebug,
}))

环境变量控制

var level slog.LevelVar
level.UnmarshalText([]byte(os.Getenv("LOG_LEVEL")))
logger := slog.New(slog.NewTextHandler(os.Stdout, &slog.HandlerOptions{
    Level: &level,
}))

五、Debian 系统层面常见做法

systemd 服务示例

[Service]
Environment=LOG_LEVEL=debug
ExecStart=/opt/app/bin/server

重新加载:

sudo systemctl daemon-reload
sudo systemctl restart yourapp

六、快速判断你该用哪种

情况 建议
小工具 log
需要级别 logrus / slog
高性能服务 zap
Go ≥ 1.21 ✅ 推荐 slog

如果你能告诉我:

  • 用的是 哪个日志库
  • 是否是 systemd 服务
  • Go 版本

我可以直接给你可复制的配置。

0 踩