在 Debian 上,“改 Golang 日志级别”通常取决于你用的是哪个日志库,而不是操作系统本身(Debian 只是运行环境)。下面按常见情况说明。
log(最简单)标准库 log 没有日志级别概念(只有 Print / Fatal / Panic)。
log.SetFlags(log.LstdFlags | log.Lshortfile)
log.Println("info")
✅ 想“改级别”只能:
logrus(非常常见)import "github.com/sirupsen/logrus"
func main() {
logrus.SetLevel(logrus.DebugLevel)
}
级别:
PanicLevelFatalLevelErrorLevelWarnLevelInfoLevelDebugLevelTraceLevellevel := os.Getenv("LOG_LEVEL")
l, err := logrus.ParseLevel(level)
if err == nil {
logrus.SetLevel(l)
}
运行:
LOG_LEVEL=debug ./yourapp
zap(Uber,性能高)logger, _ := zap.NewDevelopment()
logger, _ := zap.NewProduction()
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,
}))
[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 |
如果你能告诉我:
我可以直接给你可复制的配置。