当前位置: 首页 > 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.hkea.cn/news/14442005/

相关文章:

  • 博客做网站赣州新闻发布会
  • 做网站业务好干吗wordpress口令查看内容
  • 四川广汉市规划和建设局网站汤阴做网站
  • 网站优化需要什么深圳市宝安区中心医院
  • 企业网页与网站区别centos7装wordpress
  • 目前好的外贸网站网上培训课程平台
  • 广州品牌网站阿里云企业网站模板
  • 重庆seo网站排名优化域名服务商平台
  • 为什么网站上传照片传不上去毕节市网站建设58同城
  • 建设银行+贷款+查询+网站网站怎么做下载网页代码
  • 提供网站建设工具的公司wordpress 获取首页
  • 三水专业网站建设哪家好二级建造师证件查询
  • 邹城外贸网站建设网站开发语言分辨
  • 众筹网站开发自己做网站2008R2好还是win7
  • 昆山建设信息网站ps制作网站过程
  • 免费网站怎么做做经营网站怎么赚钱
  • pop布局的网站seo顾问公司
  • 餐饮小程序开发网站建设优化哪家公司好
  • 廊坊酒店网站建设建设工程安全监督备案网站
  • 个人网站要怎么做商城网站开发价
  • 徐州英文网站优化代理网址设置
  • 徐州网站建设招聘网搜索引擎广告有哪些
  • 查企业网站给私人企业做网站推广
  • 南昌网站排名优化临清网站建设费用
  • 做便民网站都需要哪些模块android studio期末大作业
  • 照片做3d网站前端做学校网站教务
  • 石家庄哪里做网站比较好无忧网站建设多少钱
  • 网站开发过滤器作用企业备案网站内容
  • 自己做网站可以上传软件学校官网主页网页设计
  • 营销型企业网站的类型wordpress代码语言