国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當前位置: 首頁 > news >正文

項目營銷策劃方案360優(yōu)化大師官方下載

項目營銷策劃方案,360優(yōu)化大師官方下載,哪些網(wǎng)站上推廣比較好,那個網(wǎng)站可以做視頻app制作的addTenant api 和 rpc 的實現(xiàn) 上一篇我們說到咱們還剩下 addTenant 功能還未實現(xiàn),不知道有沒有兄弟感興趣去實驗一波的,本篇文章進行簡要補充 根據(jù)上一篇文章分析,其實我們只需要執(zhí)行如下幾步即可: 編寫 tenant.api&#xff0c…

addTenant api 和 rpc 的實現(xiàn)

上一篇我們說到咱們還剩下 addTenant 功能還未實現(xiàn),不知道有沒有兄弟感興趣去實驗一波的,本篇文章進行簡要補充

根據(jù)上一篇文章分析,其實我們只需要執(zhí)行如下幾步即可:

  1. 編寫 tenant.api,提供外部 addTenant 的 http 接口
  • 編寫 tenant.api

提供一個 POST http 的接口 / api /tenant/addtenant

type (AddTenantReq {Name string `json:"name"`Addr 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 .
  1. 修改 api 的配置和邏輯層,讓 api 層去調(diào)用之前寫好的 rpc 接口 即可

對于配置可以模仿上一篇文章 order.api 的配置進行修改,另外只需要調(diào)整 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 日志組件,分別從如下幾個方面來聊一聊我的理解,如果描述有不當?shù)牡胤?#xff0c;還請多加評論多加交流

  • Go-zero 中 logx 是如何使用的?
  • Logx 基本的數(shù)據(jù)結(jié)構(gòu)
  • Logx 的默認接口實現(xiàn)
  • Logx 日志存儲位置,以及自定義存儲日志位置的實現(xiàn)
  • Logx 實現(xiàn)自定義接口的方式

Go-zero 中 logx 是如何使用的?

我們以之前的 demo ,關(guān)于 tenant 的 rpc 部分作為例子,追蹤一下代碼,是如何走到日志部分的邏輯的

可以看到在 tenant.go 的文件中,做的是服務(wù)的啟動

zrpc.MustNewServer 實際上是調(diào)用 go-zero 的 zrpc 包 的 NewServer 函數(shù),傳入的參數(shù)是

  • c RpcServerConf , 我們 rpc 服務(wù)的配置,就是咱們項目中的 etc/tenant.yaml

今天不聊關(guān)于 RpcServerConf 的結(jié)構(gòu),咱們重點說說 logx

  • register internal.RegisterFn 注冊服務(wù)的回調(diào)函數(shù)

NewServer 函數(shù)做了如下幾件事情:

  • RpcServerConf 配置數(shù)據(jù)的有效性檢查
  • 初始化 metrics 的 options
  • 設(shè)置服務(wù)名,注冊 etcd 服務(wù),服務(wù)名就是上述配置文件中的 Name 字段
  • c.SetUp() 啟動整個服務(wù)

對于 logx 日志組件的啟動就是在 c.SetUp() 中完成

Logx 基本的數(shù)據(jù)結(jié)構(gòu)

繼續(xù)看到 logx.SetUp() 中的具體實現(xiàn) , 函數(shù)需要傳入的數(shù)據(jù)結(jié)構(gòu)是這樣的 LogConf

type LogConf struct {ServiceName         string `json:",optional"`Mode                string `json:",default=console,options=[console,file,volume]"`Encoding            string `json:",default=json,options=[json,plain]"`TimeFormat          string `json:",optional"`Path                string `json:",default=logs"`Level               string `json:",default=info,options=[info,error,severe]"`Compress            bool   `json:",optional"`KeepDays            int    `json:",optional"`StackCooldownMillis int    `json:",default=100"`
}
  • ServiceName:設(shè)置服務(wù)名稱,可選。在 volume 模式下,該名稱用于生成日志文件。在 rest/zrpc 服務(wù)中,名稱將被自動設(shè)置為 restzrpc 的名稱。
  • Mode:輸出日志的模式,默認是 console

    • console 模式將日志寫到 stdout/stderr
    • file 模式將日志寫到 Path 指定目錄的文件中
    • volume 模式在 docker 中使用,將日志寫入掛載的卷中
  • Encoding: 指示如何對日志進行編碼,默認是 json

    • json模式以 json 格式寫日志
    • plain模式用純文本寫日志,并帶有終端顏色顯示
  • TimeFormat:自定義時間格式,可選。默認是 2006-01-02T15:04:05.000Z07:00
  • Path:設(shè)置日志路徑,默認為 logs
  • Level: 用于過濾日志的日志級別。默認為 info

    • info,所有日志都被寫入
    • error, info 的日志被丟棄
    • severe, infoerror 日志被丟棄,只有 severe 日志被寫入
  • Compress: 是否壓縮日志文件,只在 file 模式下工作
  • KeepDays:日志文件被保留多少天,在給定的天數(shù)之后,過期的文件將被自動刪除。對 console 模式?jīng)]有影響
  • StackCooldownMillis:多少毫秒后再次寫入堆棧跟蹤。用來避免堆棧跟蹤日志過多

另外對于 SetUp 函數(shù)做了如下幾件事:

  • 設(shè)定日志等級
  • 初始化時間格式
  • 根據(jù)編碼方式初始化存儲日志編碼類型
  • 根據(jù)設(shè)定的模式來初始化 Writer 句柄

Logx 的默認接口實現(xiàn)

對于 logx 打印日志的具體接口定義在:logx 包的 logger.go 文件中

對于上述接口,根據(jù)需要傳遞的參數(shù)我們可以分為如下幾類:

  • Error, Info, Slow: 將任何類型的信息寫進日志,使用 fmt.Sprint(...) 來轉(zhuǎn)換為 string
  • Errorf, Infof, Slowf: 將指定格式的信息寫入日志
  • Errorv, Infov, Slowv: 將任何類型的信息寫入日志,用 json marshal 編碼
  • Errorw, Infow, Sloww: 寫日志,并帶上給定的 key:value 字段
  • WithContext:將給定的 ctx 注入日志信息,例如用于記錄 trace-idspan-id
  • WithDuration: 將指定的時間寫入日志信息中,字段名為 duration

例如接口名后綴帶有 w 的,是需要咱們傳入 key:value 的,例如傳入的結(jié)構(gòu)是這樣的:

實際上我們可以看到在 logx 源碼中,其實有很多文件都已經(jīng)根據(jù)自己的使用情況去實現(xiàn)了上述 Logger 接口

舉一個 traceLogger 的例子

實際上我們可以直接看到,我們之前實現(xiàn)的 GetTenant rpc 方法

我們可以看到當調(diào)用了NewGetTenantLogic 方法之后,實際上是會調(diào)用 logx.WithContext(ctx) 初始化一個 traceLogger 的句柄

traceLogger 實現(xiàn)了上述 Logger 接口, 因此,當我們需要在 rpc 中打印日志的時候,我們可以這樣來使用

這個時候,實際上是調(diào)用的 traceLogger 對應(yīng)的實現(xiàn)代碼

我們可以看到,打印出來的日志,是我們所期望的信息

此處的字段對應(yīng)含義是這樣的:

  • Timestamp

時間戳

  • Level

日志等級

  • Duration

時間間隔

  • Caller

日志調(diào)用者

  • Content

具體的日志信息

仔細查看上述日志,我們可以發(fā)現(xiàn)還有 trace 和 span 字段也打印出來了,但是 logEntry 為什么沒有定義呢

咱們稍微追一下代碼,不難看出,是 traceLogger 內(nèi)部的 info 函數(shù)進行日志信息的拼接

Logx 自定義存儲日志位置 和 實現(xiàn)自定義接口的方式

Logx 自定義存儲日志位置 和 實現(xiàn)自定義接口的方式其實我在這里就不需要過多的解釋了,簡單說明一下實現(xiàn)手段就可以了,有必要的話咱們可以查看 go-zero 官方文檔 https://go-zero.dev/cn/docs/component/logx/

自定義存儲日志位置

對于咱們需要修改日志的輸出位置,實際上我們可以仔細思考一下,對于日志的數(shù)據(jù),go-zero 還是使用的 golang io 包中的 Writer 接口

咱們只需要定義對象,去實現(xiàn) Writer 接口 中的 Write(p []byte) (n int, err error) 方法就可以了

官網(wǎng)也給了我們例子,例如咱們實現(xiàn)輸出的日志往 kafka 里面吐,我們就可以這樣

實現(xiàn)自定義接口

實現(xiàn)自定義接口,咱們其實剛才看 traceLogger 的實現(xiàn)方式,我們就能領(lǐng)悟到, traceLogger 去實現(xiàn) Logger 接口中的方法,并且加入自己自定義的邏輯,例如加上了 trace 和 span

那么對于我們自定義接口,其實也是非常容易的,照葫蘆畫瓢即可了

\

感謝閱讀,歡迎交流,點個贊,關(guān)注一波 再走吧

歡迎點贊,關(guān)注,收藏

朋友們,你的支持和鼓勵,是我堅持分享,提高質(zhì)量的動力

好了,本次就到這里

技術(shù)是開放的,我們的心態(tài),更應(yīng)是開放的。擁抱變化,向陽而生,努力向前行。

我是阿兵云原生,歡迎點贊關(guān)注收藏,下次見~
可以進入地址進行體驗和學(xué)習(xí):https://xxetb.xet.tech/s/3lucCI

http://m.aloenet.com.cn/news/28349.html

相關(guān)文章:

  • dede可以做視頻網(wǎng)站百度關(guān)鍵詞指數(shù)排行
  • 羅源網(wǎng)站建設(shè)seo搜索引擎優(yōu)化技術(shù)教程
  • iis7 無法添加網(wǎng)站網(wǎng)站優(yōu)化聯(lián)系
  • 云南城市建設(shè)職業(yè)學(xué)院網(wǎng)站軟文推廣渠道
  • 移動端的網(wǎng)站怎么做今日全國最新疫情通報
  • 幾分鐘弄清楚php做網(wǎng)站手機系統(tǒng)優(yōu)化
  • 昆明網(wǎng)絡(luò)營銷網(wǎng)站怎么提高seo關(guān)鍵詞排名
  • 寶豐網(wǎng)站建設(shè)長春網(wǎng)站建設(shè)
  • 淘寶客網(wǎng)站虛擬主機盤多多百度網(wǎng)盤搜索引擎
  • 如何管理好一個網(wǎng)站怎樣才能注冊自己的網(wǎng)站
  • web網(wǎng)站雙語切換怎么做在線seo短視頻
  • 有關(guān)網(wǎng)站建設(shè)的公眾號2022最好的百度seo
  • 怎么做網(wǎng)站的步驟網(wǎng)站制作的要點和步驟詳解
  • 網(wǎng)站接入地查詢互聯(lián)網(wǎng)最賺錢的行業(yè)
  • 轉(zhuǎn)轉(zhuǎn)怎么做釣魚網(wǎng)站知名網(wǎng)絡(luò)營銷推廣
  • 桂林手機網(wǎng)站建設(shè)seo推廣經(jīng)驗
  • 購物網(wǎng)站建設(shè)機構(gòu)網(wǎng)絡(luò)營銷策略分析方法
  • 公文寫作 課程中心網(wǎng)站建設(shè)百度seo怎么優(yōu)化
  • 兼職做網(wǎng)站系統(tǒng)搜索引擎營銷的案例有哪些
  • 給博彩網(wǎng)站做推廣犯法樂云seo官網(wǎng)
  • 衢州市火車站片區(qū)規(guī)劃直通車推廣計劃方案
  • 網(wǎng)站屏蔽國內(nèi)ip個人seo外包
  • 南寧營銷型網(wǎng)站一個公司可以做幾個百度推廣
  • 快樂彩網(wǎng)站做谷歌在線瀏覽器入口
  • 那些網(wǎng)站做網(wǎng)批百度注冊公司地址
  • 電子商務(wù)網(wǎng)站建設(shè)與管理試題免費網(wǎng)站在線客服軟件
  • B2B行業(yè)門戶網(wǎng)站模板百度關(guān)鍵詞優(yōu)化點擊 教程
  • 網(wǎng)站程序模板下載seo收費標準多少
  • 最有效的網(wǎng)站推廣費用必應(yīng)搜索引擎網(wǎng)站
  • 我可以復(fù)制別人網(wǎng)站代碼自己做我的網(wǎng)站嗎具大數(shù)據(jù)培訓(xùn)課程