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

建筑钢结构网站大安区网站建设

建筑钢结构网站,大安区网站建设,做网站不错的公司,如何推广营销一个项目addTenant api 和 rpc 的实现 上一篇我们说到咱们还剩下 addTenant 功能还未实现#xff0c;不知道有没有兄弟感兴趣去实验一波的#xff0c;本篇文章进行简要补充 根据上一篇文章分析#xff0c;其实我们只需要执行如下几步即可#xff1a; 编写 tenant.api#xff0c…addTenant api 和 rpc 的实现 上一篇我们说到咱们还剩下 addTenant 功能还未实现不知道有没有兄弟感兴趣去实验一波的本篇文章进行简要补充 根据上一篇文章分析其实我们只需要执行如下几步即可 编写 tenant.api提供外部 addTenant 的 http 接口 编写 tenant.api 提供一个 POST http 的接口 / api /tenant/addtenant type (AddTenantReq {Name string json:nameAddr string json:addr}AddTenantRsp {Id string json:id} ) service tenant {handler addTenantpost /api/tenant/addtenant(AddTenantReq) returns (AddTenantRsp)goctl 生成 api 代码 goctl api go -api tenant.api -dir .修改 api 的配置和逻辑层让 api 层去调用之前写好的 rpc 接口 即可 对于配置可以模仿上一篇文章 order.api 的配置进行修改另外只需要调整 addTenant 的 logic 层即可 func (l *AddTenantLogic) AddTenant(req *types.AddTenantReq) (*types.AddTenantRsp, error) {// todo: add your logic here and delete this linersp,err :l.svcCtx.TenantRpc.AddTenant(l.ctx, tenant.AddTenantReq{Name: req.Name,Addr: req.Addr,})if err !nil{return nil,err}return types.AddTenantRsp{Id: rsp.Id},nil }具体的代码案例可以访问地址https://github.com/qingconglaixueit/my_test_Demo 下面我们来看是 go-zero 中 日志组件 logx 的剖析 logx 日志组件剖析 对于 logx 日志组件分别从如下几个方面来聊一聊我的理解如果描述有不当的地方还请多加评论多加交流 Go-zero 中 logx 是如何使用的 Logx 基本的数据结构 Logx 的默认接口实现 Logx 日志存储位置以及自定义存储日志位置的实现 Logx 实现自定义接口的方式 Go-zero 中 logx 是如何使用的 我们以之前的 demo 关于 tenant 的 rpc 部分作为例子追踪一下代码是如何走到日志部分的逻辑的 可以看到在 tenant.go 的文件中做的是服务的启动 zrpc.MustNewServer 实际上是调用 go-zero 的 zrpc 包 的 NewServer 函数传入的参数是 c RpcServerConf 我们 rpc 服务的配置就是咱们项目中的 etc/tenant.yaml 今天不聊关于 RpcServerConf 的结构咱们重点说说 logx register internal.RegisterFn 注册服务的回调函数 NewServer 函数做了如下几件事情 RpcServerConf 配置数据的有效性检查 初始化 metrics 的 options 设置服务名注册 etcd 服务服务名就是上述配置文件中的 Name 字段 c.SetUp() 启动整个服务 对于 logx 日志组件的启动就是在 c.SetUp() 中完成 Logx 基本的数据结构 继续看到 logx.SetUp() 中的具体实现 函数需要传入的数据结构是这样的 LogConf type LogConf struct {ServiceName string json:,optionalMode string json:,defaultconsole,options[console,file,volume]Encoding string json:,defaultjson,options[json,plain]TimeFormat string json:,optionalPath string json:,defaultlogsLevel string json:,defaultinfo,options[info,error,severe]Compress bool json:,optionalKeepDays int json:,optionalStackCooldownMillis int json:,default100 }ServiceName设置服务名称可选。在 volume 模式下该名称用于生成日志文件。在 rest/zrpc 服务中名称将被自动设置为 rest或zrpc 的名称。 Mode输出日志的模式默认是 console console 模式将日志写到 stdout/stderrfile 模式将日志写到 Path 指定目录的文件中volume 模式在 docker 中使用将日志写入挂载的卷中 Encoding: 指示如何对日志进行编码默认是 json json模式以 json 格式写日志plain模式用纯文本写日志并带有终端颜色显示 TimeFormat自定义时间格式可选。默认是 2006-01-02T15:04:05.000Z07:00 Path设置日志路径默认为 logs Level: 用于过滤日志的日志级别。默认为 info info所有日志都被写入error, info 的日志被丢弃severe, info 和 error 日志被丢弃只有 severe 日志被写入 Compress: 是否压缩日志文件只在 file 模式下工作 KeepDays日志文件被保留多少天在给定的天数之后过期的文件将被自动删除。对 console 模式没有影响 StackCooldownMillis多少毫秒后再次写入堆栈跟踪。用来避免堆栈跟踪日志过多 另外对于 SetUp 函数做了如下几件事 设定日志等级 初始化时间格式 根据编码方式初始化存储日志编码类型 根据设定的模式来初始化 Writer 句柄 Logx 的默认接口实现 对于 logx 打印日志的具体接口定义在logx 包的 logger.go 文件中 对于上述接口根据需要传递的参数我们可以分为如下几类 Error, Info, Slow: 将任何类型的信息写进日志使用 fmt.Sprint(...) 来转换为 string Errorf, Infof, Slowf: 将指定格式的信息写入日志 Errorv, Infov, Slowv: 将任何类型的信息写入日志用 json marshal 编码 Errorw, Infow, Sloww: 写日志并带上给定的 key:value 字段 WithContext将给定的 ctx 注入日志信息例如用于记录 trace-id和span-id WithDuration: 将指定的时间写入日志信息中字段名为 duration 例如接口名后缀带有 w 的是需要咱们传入 keyvalue 的例如传入的结构是这样的 实际上我们可以看到在 logx 源码中其实有很多文件都已经根据自己的使用情况去实现了上述 Logger 接口 举一个 traceLogger 的例子 实际上我们可以直接看到我们之前实现的 GetTenant rpc 方法 我们可以看到当调用了NewGetTenantLogic 方法之后实际上是会调用 logx.WithContext(ctx) 初始化一个 traceLogger 的句柄 traceLogger 实现了上述 Logger 接口 因此当我们需要在 rpc 中打印日志的时候我们可以这样来使用 这个时候实际上是调用的 traceLogger 对应的实现代码 我们可以看到打印出来的日志是我们所期望的信息 此处的字段对应含义是这样的 Timestamp 时间戳 Level 日志等级 Duration 时间间隔 Caller 日志调用者 Content 具体的日志信息 仔细查看上述日志我们可以发现还有 trace 和 span 字段也打印出来了但是 logEntry 为什么没有定义呢 咱们稍微追一下代码不难看出是 traceLogger 内部的 info 函数进行日志信息的拼接 Logx 自定义存储日志位置 和 实现自定义接口的方式 Logx 自定义存储日志位置 和 实现自定义接口的方式其实我在这里就不需要过多的解释了简单说明一下实现手段就可以了有必要的话咱们可以查看 go-zero 官方文档 https://go-zero.dev/cn/docs/component/logx/ 自定义存储日志位置 对于咱们需要修改日志的输出位置实际上我们可以仔细思考一下对于日志的数据go-zero 还是使用的 golang io 包中的 Writer 接口 咱们只需要定义对象去实现 Writer 接口 中的 Write(p []byte) (n int, err error) 方法就可以了 官网也给了我们例子例如咱们实现输出的日志往 kafka 里面吐我们就可以这样 实现自定义接口 实现自定义接口咱们其实刚才看 traceLogger 的实现方式我们就能领悟到 traceLogger 去实现 Logger 接口中的方法并且加入自己自定义的逻辑例如加上了 trace 和 span 那么对于我们自定义接口其实也是非常容易的照葫芦画瓢即可了 \ 感谢阅读欢迎交流点个赞关注一波 再走吧 欢迎点赞关注收藏 朋友们你的支持和鼓励是我坚持分享提高质量的动力 好了本次就到这里 技术是开放的我们的心态更应是开放的。拥抱变化向阳而生努力向前行。 我是阿兵云原生欢迎点赞关注收藏下次见~ 可以进入地址进行体验和学习https://xxetb.xet.tech/s/3lucCI
http://www.tj-hxxt.cn/news/232551.html

相关文章:

  • 用地方别名做网站名支持html5的网站
  • 网站自主制作平台各类最牛网站建设
  • 网站tdk设置界面江苏高效网站制作公司
  • 财经门户网站建设专业高端网站建设
  • 四川省建设安全协会网站大连零基础网站建设教学哪里有
  • 成都网站建设qghl亿网网络科技有限公司
  • 第三方做网站招商网站建设地点
  • 可以做思维导图的网站asp怎么样做网站后台
  • 协会网站建设需求文档软件定制化
  • 网站维护服务费南阳网站建设制作价格
  • 医药网站建设中图片宁晋网站建设设计
  • 北京的制作网站的公司有哪些高创园网站建设方案
  • 做网站公司商丘新网站如何做营销
  • 网站建设与规划活动推广宣传方案
  • 网站建设意向表深圳网页设计学院
  • 建设网站的工作步骤西安市建设工程信息网诚信信息平台诚信承诺书在哪儿下载
  • 帮别人做网站赚钱吗网站建设 psd
  • 有了网站域名如何做网站汽车网页模板
  • 网站图片居中代码wordpress博客站模板
  • 广州网站建设在线大淘客网站logo怎么做
  • 做网站分几步30个免费货源网站
  • 做网站一定要认证吗wordpress rss订阅
  • 姜堰区住房和城乡建设局网站wordpress 所有函数
  • 深圳网站设计灵点网络口碑好牡丹江47号公告
  • 团购网站 设计方案wordpress wp-signup.php
  • 锁定网站导航栏西安网站制作顶
  • 多元网站建设重庆做网站怎么做呀
  • 百度个人网站申请城市文化建设的网站
  • 网站图一般做多少分辨率深圳做网站网络营销公司排名
  • 帮别人做网站开什么内容的专票网站大图轮播