• 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), // 记录退避时长字段
    	)
    }
    
    
  • 相关阅读:
    c# --- 抽象类,密封类与子类的构造函数
    《白皮书》:人脸识别系统的组成及面临的安全风险
    面试算法 环形链表的判定
    ZeroTier CentOS7 网关机配置
    整篇文章翻译软件提供多平台翻译api接口
    小程序npm包--API Promise化
    递归求数组笛卡尔积
    30秒让你弄懂pdf怎么翻译,还在犹豫什么
    Linux03: shell编程
    React18原理: React核心对象之Update、UpdateQueue、Hook、Task对象
  • 原文地址:https://blog.csdn.net/MCM0115/article/details/139654048