Go語言:zookeeper客戶端可選參數配置

 go-zookeeper有3個比較常用的可選參數,分別控制日誌輸出和事件回調:

//是否輸出日誌
func WithLogInfo(logInfo bool) connOption
//定製日誌輸出
func WithLogger(logger Logger) connOption
//事件回調
func WithEventCallback(cb EventCallback) connOption

 示例:

package main

import (
	"github.com/samuel/go-zookeeper/zk"
	"github.com/wonderivan/logger"
	"net/http"
	"runtime"
	"time"
)

type ZKLogger struct{}

func (lg ZKLogger) Printf(msg string, v ...interface{}) {
	logger.Info("zk: "+msg, v)
}

func main() {
	logger.SetLogger(`{"Console": {"level": "DEBG"}}`)
	logger.Info("version: " + runtime.Version())

	conn, _, _  := zk.Connect([]string{"127.0.0.1"},
		time.Second*5,
		zk.WithLogger(ZKLogger{}),
		zk.WithLogInfo(true),
		zk.WithEventCallback(zk.EventCallback(func(event zk.Event){
			logger.Info("zk event: Type=%v State=%v path=%s Server=%s Err=%s", event.Type, event.State,event.Path,event.Server,event.Err)
		})),
	)
	defer conn.Close()

	logger.Info("listen on 8080")
	http.ListenAndServe(":8080", nil)
}

 console日誌輸出:

2020-04-23 11:37:46 [INFO] [cms/zkoption.go:19] version: go1.13.8
2020-04-23 11:37:46 [INFO] [cms/zkoption.go:31] listen on 8080
2020-04-23 11:37:46 [INFO] [cms/zkoption.go:26] zk event: Type=EventSession State=StateConnecting path= Server=127.0.0.1:2181 Err=%!s(<nil>)
2020-04-23 11:37:46 [INFO] [cms/zkoption.go:26] zk event: Type=EventSession State=StateConnected path= Server=127.0.0.1:2181 Err=%!s(<nil>)
2020-04-23 11:37:46 [INFO] [cms/zkoption.go:14] zk: Connected to [127.0.0.1:2181]
2020-04-23 11:37:46 [INFO] [cms/zkoption.go:26] zk event: Type=EventSession State=StateHasSession path= Server=127.0.0.1:2181 Err=%!s(<nil>)
2020-04-23 11:37:46 [INFO] [cms/zkoption.go:14] zk: authenticated: id=[103690444943525257 5000], timeout=%!d(MISSING)
2020-04-23 11:37:46 [INFO] [cms/zkoption.go:14] zk: re-submitting `[0]` credentials after reconnect

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章