当前位置: 首页 > news >正文

[Golang] 管理日志信息就用Zap包

😚一个不甘平凡的普通人,致力于为Golang社区和算法学习做出贡献,期待您的关注和认可,陪您一起学习打卡!!!😘😘😘
🤗专栏:算法学习
🤗专栏:Go实战
💬个人主页:个人主页

请添加图片描述

文章目录

  • Zap日志库
    • 常用方法
    • 练手案例

哥们带你学go-zap包,感谢支持,我会继续努力的!

Zap日志库

引入:“go.uber.org/zap”

zap包使用非常简单,其有非常明显的特征和优点

  1. 高性能
    可以快速地写入大量的日志数据。
  2. 低内存占用:
    内存占用非常低,可以在内存敏感的场景下使用。
  3. 可扩展性
    提供了多种可扩展的日志输出方式,例如控制台输出、文件输出、网络输出等,可以灵活地适应不同的需求
  4. 日志级别丰富
    支持多种日志级别,包括 debug、info、warn 和 error 等级别,可以记录不同程度的信息,方便问题追踪和排查
  5. 内置字段支持
    支持内置字段的添加,可以轻松地记录更加详细的信息,例如请求 ID、用户 ID 等
  6. 多种日志格式支持
    支持多种日志格式,例如 JSON、Console、Logfmt 等格式,可以根据需要选择不同的格式输出日志。

常用方法

logger.Debug(“debug log”)
使用此方法记录 debug 级别的日志信息。通常用于记录系统的调试信息,例如输出变量的值、函数执行路径等。

logger.Info(“info log”)
使用此方法记录 info 级别的日志信息。通常用于记录系统正常运行期间的关键信息,例如登录成功、任务完成等。

logger.Warn(“warning log”)
使用此方法记录 warn 级别的日志信息。通常用于记录系统出现一些非致命性的问题或潜在的错误,例如文件不存在、网络连接超时等。

logger.Error(“error log”, zap.Error(err))
使用此方法记录 error 级别的日志信息。通常用于记录系统出现了严重的异常或错误,例如数据库连接失败、程序崩溃等。在此方法中,还可以传递一个 zap.Error() 方法用于记录 error 对象的详细信息,例如堆栈跟踪信息等。

练手案例

package mainimport ("go.uber.org/zap"
)func main() {
// 创建一个生产环境下的logger实例logger, err := zap.NewProduction()if err != nil {panic(err)}// 确保所有日志都被写进磁盘  可以添加匿名函数对Sync()方法检验defer logger.Sync()// 打印不同级别的日志信息logger.Debug("debug log")logger.Info("info log")logger.Warn("warning log")logger.Error("error log", zap.Error(err))// 带有字段的日志信息//通过zap.String(),zap.Int() 添加额外的字段信息,更好的管理日志信息logger.Info("user created", zap.String("name", "John"), zap.Int("age", 30))
}
http://www.lryc.cn/news/69038.html

相关文章:

  • 【pytest】执行环境切换的两种解决方案
  • 2023国赛tomcat题
  • 计算机视觉——day 92 基于跨领域协作学习的单图像去雨
  • Java 正则表达式
  • Oracle索引知识看这一篇就足够
  • kafka命令行操作
  • Pinia 上手使用(store、state、getters、actions)
  • C++小项目之文本编辑器mynote(1.0.0版本)
  • 人工智能的界面革命,消费者与企业互动的方式即将发生变化。
  • 深度学习课程:手写体识别示例代码和详细注释
  • 10-03 单元化架构设计
  • JAVA—实验3 继承与多态
  • TCP协议和相关特性
  • 【SpringCloud组件——Eureka】
  • JVM面试题(一)
  • c# 无损压缩照片大小,并且设计了界面,添加了外部Ookii.Dialogs.dll,不一样的选择文件夹界面,并且可以把外部dll打包进exe中
  • 《统计学习方法》——隐马尔可夫模型(上)
  • ElasticSearch删除索引【真实案例】
  • 基于FPGA+JESD204B 时钟双通道 6.4GSPS 高速数据采集设计(三)连续多段触发存储及传输逻辑设计
  • 对 Iterator, Generator 的理解?
  • C++基础
  • 软件测试全流程
  • 【软件测试】支付模块测试攻略,这些测试方法和注意事项你掌握了么?
  • 刷完这个笔记,17K不能再少了....
  • 知识变现创业指南-《知识变现秘籍》
  • springboot+java博物馆文物管理系统
  • Ansible 自动化运维工具(二)——Ansible 的脚本(playbook 剧本)
  • 阿里云镜像服务下载并安装Go环境
  • 工作线程快速优雅退出方式探讨
  • 甘特图控件DHTMLX Gantt教程:用PHP:Laravel实现Gantt(上)