Go日志组件Zap的基本使用

1.Zap sugar输出

package main

import (
	"go.uber.org/zap" // 引入 zap 包
	"time"            // 引入 time 包
)

func main() {
	logger, _ := zap.NewProduction() // 创建生产环境下的 Logger 实例
	//logger, _ = zap.NewDevelopment() // 创建测试环境下的 Logger 实例
	defer logger.Sync() // 延迟关闭 Logger 并刷新缓冲区

	url := "https://imooc.com" // 定义 URL
	sugar := logger.Sugar()    // 创建一个 Sugar Logger

	sugar.Infow("failed to fetch URL",
		// 结构化上下文作为松散类型的键值对
		"url", url, // URL 键值对
		"attempt", 3, // 尝试次数键值对
		"backoff", time.Second, // 退避时长键值对
	)

	sugar.Infof("Failed to fetch URL: %s", url) // 格式化记录错误信息
}

2. Zap 文件输出

package main

import (
	"go.uber.org/zap" // 引入 zap 包
	"time"            // 引入 time 包
)

// NewLogger 返回一个 zap.Logger 实例和可能的错误
func NewLogger() (*zap.Logger, error) {
	// 创建一个生产配置的 Logger 配置
	cfg := zap.NewProductionConfig()
	// 设置输出路径
	cfg.OutputPaths = []string{
		"./myproject.log", // 输出到 myproject.log 文件
		"stderr",          // 输出到标准错误
		"stdout",          // 输出到标准输出
	}
	// 根据配置构建 Logger
	return cfg.Build()
}

func main() {
	// 初始化 logger
	logger, err := NewLogger()
	if err != nil {
		panic(err) // 如果初始化失败,则抛出错误
		//panic("初始化logger失败")
	}
	su := logger.Sugar() // 创建一个 sugar logger
	defer su.Sync()      // 在退出前同步日志

	url := "https://imooc.com" // 设置 URL
	// 记录日志信息
	su.Info("failed to fetch URL",
		// 结构化上下文作为强类型的 Field 值
		zap.String("url", url),               // 记录 URL 字段
		zap.Int("attempt", 3),                // 记录尝试次数字段
		zap.Duration("backoff", time.Second), // 记录退避时长字段
	)
}

相关推荐

  1. Go日志组件Zap基本使用

    2024-06-16 15:32:02       9 阅读
  2. go语言开发】loglus日志框架使用

    2024-06-16 15:32:02       35 阅读
  3. go语言gin框架基本使用

    2024-06-16 15:32:02       40 阅读
  4. go语言-context基本使用

    2024-06-16 15:32:02       25 阅读
  5. Go-学会 map 基本使用

    2024-06-16 15:32:02       16 阅读
  6. tqdm+enumerate+zip组合使用

    2024-06-16 15:32:02       26 阅读
  7. gRPC-Go基础(1)protoc使用

    2024-06-16 15:32:02       38 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-16 15:32:02       10 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-16 15:32:02       12 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-16 15:32:02       11 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-16 15:32:02       14 阅读

热门阅读

  1. CAP和Base

    2024-06-16 15:32:02       7 阅读
  2. HIL测试-车辆模型

    2024-06-16 15:32:02       6 阅读
  3. C语言指针与数组的区别

    2024-06-16 15:32:02       6 阅读
  4. Python在SQLite中的应用:从入门到进阶

    2024-06-16 15:32:02       6 阅读
  5. 全志d1 licheerv编译

    2024-06-16 15:32:02       6 阅读