Go日志组件Zap的基本使用

文章目录

  • [1.Zap sugar输出](#1.Zap sugar输出)
  • [2. Zap 文件输出](#2. Zap 文件输出)

1.Zap sugar输出

go 复制代码
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 文件输出

go 复制代码
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), // 记录退避时长字段
	)
}
相关推荐
秃头佛爷4 分钟前
Python学习大纲总结及注意事项
开发语言·python·学习
待磨的钝刨5 分钟前
【格式化查看JSON文件】coco的json文件内容都在一行如何按照json格式查看
开发语言·javascript·json
XiaoLeisj2 小时前
【JavaEE初阶 — 多线程】单例模式 & 指令重排序问题
java·开发语言·java-ee
paopaokaka_luck2 小时前
【360】基于springboot的志愿服务管理系统
java·spring boot·后端·spring·毕业设计
励志成为嵌入式工程师3 小时前
c语言简单编程练习9
c语言·开发语言·算法·vim
捕鲸叉3 小时前
创建线程时传递参数给线程
开发语言·c++·算法
A charmer4 小时前
【C++】vector 类深度解析:探索动态数组的奥秘
开发语言·c++·算法
码农小旋风4 小时前
详解K8S--声明式API
后端
Peter_chq4 小时前
【操作系统】基于环形队列的生产消费模型
linux·c语言·开发语言·c++·后端
Yaml44 小时前
Spring Boot 与 Vue 共筑二手书籍交易卓越平台
java·spring boot·后端·mysql·spring·vue·二手书籍