From 02563ceaf16ea73018f4bc9802b57356bc48c5f7 Mon Sep 17 00:00:00 2001 From: "garen.fang" Date: Sat, 26 Nov 2022 20:09:17 +0800 Subject: [PATCH] fix panic when logger or dialer is not set in canal config --- canal/canal.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/canal/canal.go b/canal/canal.go index 27799de80..048ddcce6 100644 --- a/canal/canal.go +++ b/canal/canal.go @@ -4,6 +4,7 @@ import ( "context" "fmt" "io" + "net" "os" "regexp" "strconv" @@ -19,6 +20,7 @@ import ( "github.com/go-mysql-org/go-mysql/schema" "github.com/pingcap/errors" "github.com/pingcap/parser" + "github.com/siddontang/go-log/log" ) // Canal can sync your MySQL data into everywhere, like Elasticsearch, Redis, etc... @@ -60,6 +62,14 @@ var ErrExcludedTable = errors.New("excluded table meta") func NewCanal(cfg *Config) (*Canal, error) { c := new(Canal) + if cfg.Logger == nil { + streamHandler, _ := log.NewStreamHandler(os.Stdout) + cfg.Logger = log.NewDefault(streamHandler) + } + if cfg.Dialer == nil { + dialer := &net.Dialer{} + cfg.Dialer = dialer.DialContext + } c.cfg = cfg c.ctx, c.cancel = context.WithCancel(context.Background())