go kit微服務 日誌功能

2021-10-13 09:59:47 字數 2340 閱讀 2162

本質上講,go-kit中介軟體採用了裝飾者模式,傳入endpoint物件,封裝部分業務邏輯,然後返回endpoint物件。

我們通過給service層新增日誌功能來說明一下

新建middleware.go檔案,加入如下**:

type servicemiddleware func(service) service接下來,新建型別logmiddlewareserver,該型別中嵌入了service,還包含乙個logger屬性,**如下所示:

type logmiddlewareserver struct
再建立乙個方法logmiddlewareserver把日誌記錄物件嵌入中介軟體。該方法接受日誌物件,返回servicemiddleware ,而servicemiddleware 可以傳入service物件,這樣就可以對service增加一層裝飾。**如下:

func logmiddlewareserver(log log.logger) servicemiddleware 

}}

接下來就可以讓新的型別logmiddlewareserver 實現service的介面方法了。實現方法時可以在其中使用日誌物件記錄呼叫方法、呼叫時間、傳入引數、輸出結果、呼叫耗時等資訊。下面以add方法為例進行實現,其他方法與之類似:

func (l logmiddlewareserver) add(a, b int) int
開啟main.go,呼叫logmiddlewareserver建立日誌中介軟體實現對svc的包裝,**如下所示

}執行效果就不展示了,現在只是對service新增了log日誌,接下來對endpoint層也新增下日誌功能,相比service層,endpoint層新增日誌功能就很容易了,直接上**

新建middleware.go檔案,加入如下**:

}開啟main.go,呼叫loggingmiddleware建立日誌中介軟體實現對endpoint的包裝,**如下所示

endpoint := endpoints.makearithmeticendpoint(svc)

// add logging middleware

endpoint=endpoints.loggingmiddleware(logger)(endpoint)

endpoint層就新增好了,效果就不貼了

參考:

gokit 入門微服務1

不拒絕英文的朋友請移步 第一步 讓我們建立乙個最小化的gokit 服務,現在我們將用main.go乙個檔案實現,gokit的首要準則。業務邏輯 service從業務邏輯開始,為業務邏輯服務,在gokit中我們把服務抽象為乙個介面。stringservice provides operations o...

Go Kit 微服務 使用內建http發布服務

文件 安裝 其他的框架 go micro kite go kit工具包集合,幫助開發者靈活自由的建立微服務體系。文件 日誌功能 限流api監控 服務註冊與發現 api網管 服務鏈路追蹤 服務熔斷 transport 主要負責與http grpc thrift等相關的邏輯進行實現 endpoint 定...

go kit微服務,服務註冊與發現,負載均衡(二)

負載均衡 consul 是 hashicorp 公司推出的開源工具,用於實現分布式系統的服務發現與配置。與其他分布式服務註冊與發現的方案,consul的方案更 一站式 內建了服務註冊與發現框 架 具有以下性質 分布一致性協議實現 健康檢查 key value儲存 多資料中心方案,不再需要依賴其他工具...