Gone框架介绍31 - 使用`goner/zap`替代logrus默认实现,提升日志输出的效率

gone是可以高效开发Web服务的Golang依赖注入框架
github地址:https://github.com/gone-io/gone
文档地址:https://goner.fun/zh/

文章目录

  • `goner/zap` 使用说明
    • 注册到Gone
    • 使用 sugar logger
    • 使用 zap logger
    • provider模式,给当前模块提供logger
    • 配置项

goner/zap 使用说明

注册到Gone

	//注册 `goner/zap` 相关的Goners_ = goner.ZapLoggerPriest(cemetery)

注意:应该将goner/zap注册的注册放到其他Goners注册之前,如果zap注册了,默认使用的logrus就不会再注册,反之如果logrus注册了,zap就不会再注册。

使用 sugar logger

type MyService struct {gone.Flaggone.Logger `gone:"*"`
}func (s *MyService) print() {s.Info("hello gone")
}

gone.Logger 接口的实现使用的就是zap sugar,所以直接注入gone.Logger,就可以直接使用zap sugar了。

使用 zap logger

type MyService struct {gone.Flaggone_zap.Logger `gone:"*"`
}func (s *MyService) print() {ctr.Info("print", zap.String("name", "gone"))
}

通过注入gone_zap.Logger,就可以直接使用zap logger了。

provider模式,给当前模块提供logger

  • sugar logger
type MyService struct {gone.Flaggone.Logger `gone:"zap,my-service"`
}
func (s *MyService) print() {s.Info("hello gone")
}

上面代码将创建一个新的名为 my-service 的 sugar logger。

  • zap logger
type MyService struct {gone.Flaggone_zap.Logger `gone:"zap,my-service"`
}func (s *MyService) print() {ctr.Info("print", zap.String("name", "gone"))
}

上面代码将创建一个新的名为 my-service 的 zap logger。

配置项

goner/zap支持通过配置,改变默认行为;关于配置的读取和配置文件的格式参考 配置读取

配置项说明类型默认值
log.level日志级别,支持 debug、info、warn、error、panic、fatalstringinfo
log.enable-trace-id是否开启traceId,开启traceId后,日志会增加traceId字段booltrue
log.disable-stacktrace是否禁用堆栈信息,禁用堆栈信息后,日志不会增加堆栈信息boolfalse
log.stacktrace-level输出日志时同时打印堆栈信息的级别,支持 debug、info、warn、error、panic、fatalstringerror
log.report-caller是否打印调用方信息,包括文件名、代码行号和函数名booltrue
log.encoder日志格式,支持 console、jsonstringconsole
log.output日志输出位置,支持 stdout、stderr、file,如果配置了file,则日志会输出到file指定的位置;支持多个路径,使用,分隔stringstdout
log.error-output错误日志输出位置,支持 stdout、stderr、file,如果配置了file,则日志会输出到file指定的位置;支持多个路径,使用,分隔string<空>
log.rotation.output日志轮转输出位置,支持 stdout、stderr、file,如果配置了file,则日志会输出到file指定的位置;配置后开启日志轮转string<空>
log.rotation.error-output错误日志轮转输出位置,支持 stdout、stderr、file,如果配置了file,则日志会输出到file指定的位置;配置后开启错误日志轮转string<空>
log.rotation.max-size日志轮转,文件最大大小,单位MBint100
log.rotation.max-files日志轮转,文件最大数量int10
log.rotation.max-age日志轮转,文件最大保存天数int30
log.rotation.local-time日志文件轮转是否使用本地时间戳booltrue
log.rotation.compress日志轮转文件是否压缩boolfalse

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/32000.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#中的数组Array和List集合区别

在C#中&#xff0c;数组&#xff08;Array&#xff09;和List集合&#xff08;List<T>&#xff09;是两种不同的数据结构&#xff0c;它们有一些区别&#xff0c;主要包括以下几点&#xff1a; 固定长度 vs 动态长度: 数组是固定长度的数据结构&#xff0c;一旦创建后&…

【专业英语 复习】第9章 Privacy, Security,and Ethics

1. 单选题 ____ scanning devices use fingerprints and iris scanners to identify individuals. A. Biometric B. Optical C. Virtual D. Visual 正确答案&#xff1a;A 生物识别扫描设备使用指纹和虹膜扫描器来识别个体。 2. 单选题 ____ is the illegal assumpti…

Oracle 迁移 Mysql

-- Oracle->MySQL -- 使用时改一下where条件的owner和table_name -- 字段数据类型映射时会将Oracle中的浮点NUMBER转换为decimal(65,8)定点数 -- 可以识别主键约束、非空约束&#xff0c;但无法识别外键约束、唯一约束、自定义check -- 对于Oracle字符串长度为4000的&#x…

Linux驱动开发笔记(十一)tty子系统及其驱动

文章目录 前言一、串口驱动框架1.1 核心数据结构1.2 数据处理流程 二、驱动编写1. 设备树的修改2. 相关API函数3. 驱动框架4. 具体功能的实现4.1 出入口函数的编写4.2 读写函数 前言 之前已经讲过应用层的应用&#xff0c;接下来我们继续进行驱动的学习。其实实际上我们很少主动…

Android记录22-关于开发中账号绑定的逻辑处理

有绑定的状态&#xff0c;自然也有取消绑定的状态&#xff1a; 这里的取消绑定只是简单改变应用内的一个状态罢了&#xff0c;并不会跟我们的服务端交互&#xff0c;也不会影响我们的账号登录的状态。 说了这么多&#xff0c;也没看见代码&#xff0c;你们会不会打我&#xff…

vs工程添加属性表

一、简介 1、 vs工程属性表以&#xff08;.props&#xff09;为后缀 2、 作用&#xff1a;当多个工程需要配置很多相同的属性配置时方便同步&#xff0c;比如多个工程需要链接相同的头文件&#xff0c;库文件&#xff0c;输出路径&#xff0c;中间目录等 3、本章内容测试环境&a…

天马学航——智慧教务系统(移动端)开发日志三

天马学航——智慧教务系统(移动端)开发日志三 日志摘要&#xff1a;更新了学生选课模块、我的课程模块以及退课的功能&#xff0c;优化了后端数据库的缓存 1、学生选课模块 学生选课模块主要实现&#xff0c;学生根据需求进行选课操作&#xff0c;通过后端查询到所有教师的课…

Java学习 - 网络IP地址与子网划分 讲解

IP地址 作用 用于决定数据包最终到达哪个计算机 组成 由32位比特组成&#xff0c;即4个字节这32位可以分为两个部分&#xff0c;称为网络号和主机号同一网段的计算机网络号相同&#xff0c;路由器负责连接不同的网段&#xff0c;而交换机负责连接同一网段中不同的计算机同一…

如何将 ChatGPT 集成到你的应用中

在当今快速发展的技术环境中&#xff0c;将人工智能聊天解决方案集成到你的应用程序中可以显著提升用户体验和参与度。OpenAI 的 ChatGPT 以其对话能力和高级语言理解而闻名&#xff0c;对于希望在其应用程序中实现智能聊天功能的开发人员来说是一个绝佳的选择。那我们今天就来…

高性能并行计算华为云实验一:MPI矩阵运算

目录 一、实验目的 二、实验说明 三、实验过程 3.1 创建矩阵乘法源码 3.1.1 实验说明 3.1.2 实验步骤 3.2 创建卷积和池化操作源码 3.2.1 实验说明 3.2.2 实验步骤 3.3 创建Makefile文件并完成编译 3.4 建立主机配置文件与运行监测 四、实验结果与分析 4.1 矩阵乘法…

压缩包文件密码破解软件 Ziperello 下载及使用教程

使用 Ziperello https://qweree.cn/index.php/416/ 对加了密码的压缩包进行密码破解&#xff0c;教程如下&#xff1a; 第一步&#xff0c;双击运行 Ziperello双击我打开程序.exe&#xff0c;如下图&#xff1a; 第二步&#xff0c;打开一个加了密的 ZIP 压缩包&#xff0c;再…

【408考点之数据结构】队列在操作系统中的任务调度和树的层次遍历

队列在操作系统中的任务调度 在操作系统中&#xff0c;任务调度是一个关键功能&#xff0c;队列常用于管理和调度任务&#xff0c;确保任务按照一定顺序执行。常见的调度算法包括先来先服务&#xff08;FCFS&#xff09;、短作业优先&#xff08;SJF&#xff09;、轮转调度&am…

Elastic字段映射(_source,doc_value,fileddata,index,store)

Elastic字段映射&#xff08;_source,doc_value,filed_data,index,store&#xff09; _source&#xff1a; source 字段用于存储 post 到 ES 的原始 json 文档。为什么要存储原始文档呢&#xff1f;因为 ES 采用倒排索引对文本进行搜索&#xff0c;而倒排索引无法存储原始输入…

程序员进阶书单

个人博客传送门 - 程序员进阶书单 翻遍知乎讨论贴、hackernews 吹水区、amazon best seller、豆瓣书单、大佬博客&#xff0c;经过一番不懈努力&#xff0c;汇总了一份质量过硬的程序员进阶书单&#xff0c;各位老铁先码住&#xff0c;慢慢看。 殿堂级 The Art of Computer …

什么概率密度函数?

首先我们来理解一下什么是连续的随机变量&#xff0c;在此之前&#xff0c;我们要先理解什么是随机变量。所谓随机变量就是在一次随机实验中一组可能的值。比如说抛硬币&#xff0c;我们设正面100&#xff0c;反面200&#xff0c;设随机变量为X&#xff0c;那么X{100,200}。 X是…

Vant:构建现代化移动端应用的理想选择

Vant&#xff1a;构建现代化移动端应用的理想选择 引言&#xff1a; 在当今移动互联网时代&#xff0c;移动应用的开发已经成为了许多企业和开发者的重要任务。为了提高开发效率和用户体验&#xff0c;选择一款优秀的UI组件库是至关重要的。而Vant作为一款流行的移动端UI组件…

STM32学习笔记(十)--I2C、IIC总线协议详解

概述&#xff1a;Inter Integrated Circuit&#xff0c;一组多从 多组多从 有应答 是一种同步&#xff08;具有时钟线需要同步时钟SCL&#xff09;、串行&#xff08;一位一位的往一个方向发送&#xff09;、半双工&#xff08;发送接收存在一种&#xff09;通信总线。 &…

【调试笔记-20240618-Windows-pnpm 更新出现 Cannot find module 问题的解决方法】

调试笔记-系列文章目录 调试笔记-20240618-Windows-pnpm 更新出现 Cannot find module 问题的解决方法 文章目录 调试笔记-系列文章目录调试笔记-20240618-Windows-pnpm 更新出现 Cannot find module 问题的解决方法 前言一、调试环境操作系统&#xff1a;Windows 10 专业版调…

qmt量化交易策略小白学习笔记第46期【qmt编程之期货行情数据--如何获取5档盘口行情、期货结算价与持仓量】

qmt编程之获取期货数据 qmt更加详细的教程方法&#xff0c;会持续慢慢梳理。 也可找寻博主的历史文章&#xff0c;搜索关键词查看解决方案 &#xff01; 感谢关注&#xff0c;咨询免费开通量化回测与获取实盘权限&#xff0c;欢迎和博主联系&#xff01; 获取5档盘口行情 …

【杂记-浅谈ICMP互联网控制消息协议】

ICMP互联网控制消息协议 一、ICMP协议概述1、定义2、工作原理3、报文格式 二、ICMP协议的应用场景1、Ping命令2、Traceroute命令3、错误报告4、MTU发现 三、ICMP协议的安全问题及防护措施1、安全威胁2、防护措施 一、ICMP协议概述 1、定义 ICMP&#xff0c;Internet Control …