Zap之日志记录器选择

在Zap中存在两个日志器模式:

  • Logger
  • SugaredLogger

这两种模式的最大区别在于是否类型安全,SugarLogger可以接收松散类型和多键值对:

//在第四行可以看到sugar的信息记录不需要显式的声明变量类型
sugar := zap.NewExample().Sugar()
defer sugar.Sync()
sugar.Infow("failed to fetch URL","url", "http://example.com","attempt", 3,"backoff", time.Second,
)
sugar.Infof("failed to fetch URL: %s", "http://example.com")

与之对应了Logger需要显式的声明日志变量(strongly-typed)的类型:

同时,官方建议在高性能场景使用Logger,其性能比sugarLogger要高。

logger := zap.NewExample()
defer logger.Sync() //默认logger是使用无缓冲的,但是可以设置为有缓冲的,所以要习惯于使用defer关闭日志变量
logger.Info("failed to fetch URL",zap.String("url", "http://example.com"),zap.Int("attempt", 3),zap.Duration("backoff", time.Second),
)

LoggersugarLogger的相互转换

logger := zap.NewExample()
defer logger.Sync()
sugar := logger.Sugar()
plain := sugar.Desugar()

Zap之日志记录器选择相关推荐

  1. golang xorm 自定义日志记录器,使用zap实现日志输出、切割日志

    目录 1.准备并下载好需要的包 2. 连接postgresql数据库 3. zap日志工具 4.实现xorm 自定义日志记录器 5.使用 完整代码 1.准备并下载好需要的包 xorm.io/xorm ...

  2. Go语音基于zap的日志封装

    zap日志封装 Zap是一个高性能.结构化日志库,专为Go语言设计.它由Uber开源,并且在Go社区中非常受欢迎.它的设计目标是提供一个简单易用.高效稳定.灵活可扩展的日志系统. 以下是Zap的一些主 ...

  3. 日志库EasyLogging++学习系列(6)—— 日志记录器

    所有的日志都是由日志记录器完成的,日志记录器使用唯一的 ID(大小写敏感)来标识.在 Easylogging++ 中默认了三个现有的日志记录器: 默认日志记录器,其 ID 为:default 性能日志 ...

  4. Golang高性能日志库zap + lumberjack 日志切割组件详解

    文章篇幅较长,可以先收藏防止迷路~ 目录 zap日志库 1. why zap? 2. 简单使用 3. 自定义logger例子 4. Gin项目使用zap 6. lumberjack 日志切割组件 za ...

  5. 日志记录器(设计模式--工厂方法模式)

    当然了,知道工厂方式大家都是很熟悉的方法了.所以我们直接上样例吧. 题目描述:某系统日志记录器要求支持多种日志记录方式,如文件日志记录(FileLog).数据库日志记录(DatabaseLog)等,且 ...

  6. Golang 操作 Logger、Zap Logger 日志

    阅读目录 Logger 介绍 默认的 Go Logger Go Logger 的优势和劣势 Zap Logger 1. Uber-go Zap 2. 为什么选择 Uber-go zap 3. 安装 4 ...

  7. Tomcat源码分析(六)--日志记录器和国际化

    本系列转载自 http://blog.csdn.net/haitao111313/article/category/1179996 日志记录器挺简单的,没有很多东西,最主要的就是一个Logger接口: ...

  8. Golang的日志记录器

    Fatal 系列函数(log.Fatalln)用来写日志消息,然后使用 os.Exit(1)终止程序. Panic 系列函数(log.Panicln)用来写日志消息,然后触发一个 panic. 日志记 ...

  9. logback日志记录器讲解

    我们看一下日志记录器的支持,logback,既支持log4j,也支持logback,找到我们的pom文件,然后看一下他的注入包,在这里我们可以看到有log4j的jar包,有slf4j的,还有logba ...

  10. 优雅地记录Python程序日志2:模块组件化日志记录器

    本文摘自:https://zhuanlan.zhihu.com/p/32043593 本篇将会涉及: logging的各个模块化组件 构建一个组件化的日志器 logging的模块组件化 在上一篇文章中 ...

最新文章

  1. 华为手机的nfc是什么功能_华为手机NFC只用来乘车?这个功能还不会用,几千块手机亏了...
  2. gpu装linux系统显示黑屏,linux操作系统安装gpu版本的paddlepaddle出现问题
  3. C++ new和delete操作符
  4. pandas中drop用法_python进行数据清理之pandas中的drop用法
  5. JZOJ 5629. 【NOI2018模拟4.4】Map
  6. boost::range模块replaced_if相关的测试程序
  7. PHP网站使用JavaScript和Iframe简单实现部分刷新效果
  8. oracle flex cluster,12c flex cluster小记(3)
  9. 使用var声明的变量 和 直接赋值并未声明的变量的区别
  10. Forms Builder常用函数
  11. android github 评分控件_「开源」Arcgis for Android测量工具更新至V1.9,新增绘制控件...
  12. angular post php 404,AngularJS POST失败:飞行前响应具有无效的HTTP状态代码404
  13. 【雷达】基于粒子群算法优化综合微带天线阵列方向图附matlab代码
  14. 新浪微博平台的多级架构
  15. 机器学习sklearn----支持向量机SVC模型评估指标
  16. 系统集成项目管理工程师计算题(期望值)
  17. linux 检查zip是否损坏,用-v参数 unzip -v test.zip 检查zip文件是否损坏代常亮
  18. has an unsupported return type
  19. 一篇文章讲透控制反转和依赖注入
  20. mysql 1236错误_mysql报1236错误解决方法

热门文章

  1. 团体力学理论(1944)--轉
  2. LeetCode-781-森林中的兔子
  3. 跳棋java课程设计,C语言课程设计(论文)跳棋.doc
  4. 金山和微软word脚注和尾注问题
  5. Word中大括号内公式左对齐
  6. 操作系统实验二:银行家算法
  7. 学3D建模需要有美术功底吗?
  8. 划线法构造三角形单元插值函数
  9. Linus Torvalds 传记
  10. win10休眠_最牛的win10优化设置方法大全