如何全面掌握Go语言中使用slog库进行日志记录的入门知识?

摘要:简介 slog 是 Go 1.21 引入的官方结构化日志库(Structured Logging)。它结束了 Go 标准库只有简单 log 包的历史,让我们可以直接输出 JSON 或 Key-Value 格式的日志,非常适合对接 ELK、G
简介 slog 是 Go 1.21 引入的官方结构化日志库(Structured Logging)。它结束了 Go 标准库只有简单 log 包的历史,让我们可以直接输出 JSON 或 Key-Value 格式的日志,非常适合对接 ELK、Grafana Loki 等日志分析系统。 相较于第三方日志库如 zap、logrus,slog 的优势在于: 零依赖:作为标准库的一部分,无需引入第三方依赖 官方维护:长期稳定,API 变更有 Go 兼容性承诺保障 接口简洁:API 设计清晰,学习成本低 可扩展:通过自定义 Handler 可以实现各种定制需求 基本使用 slog 用起来非常简单。默认输出到标准错误流(os.Stderr),格式为普通文本。 package main import ( "fmt" "log/slog" ) func main() { slog.Debug("Hello world") slog.Info("Hello world") slog.Warn("Hello world") slog.Error("Hello world") slog.Info("this is a message", "name", "zhangsan") age := 8 slog.Warn(fmt.Sprintf("这是 %d 岁?", age)) } 运行输出: $ go run main.go 2026/02/15 11:52:24 INFO Hello world 2026/02/15 11:52:24 WARN Hello world 2026/02/15 11:52:24 ERROR Hello world 2026/02/15 11:52:24 INFO this is a message name=zhangsan 2026/02/15 11:52:24 WARN 这是 8 岁? 注意:默认的 slog logger 日志级别为 INFO,因此 Debug 级别的日志不会输出。 日志级别 slog 定义了四个日志级别,从低到高依次为: 级别 常量 说明 DEBUG slog.LevelDebug 调试信息,开发环境使用 INFO slog.LevelInfo 常规信息 WARN slog.LevelWarn 警告信息 ERROR slog.LevelError 错误信息 输出 JSON 格式 slog 可以输出 JSON 格式,便于与 ELK、Grafana Loki 等日志系统集成。
阅读全文