diff --git a/go.mod b/go.mod index 6b438e41..5e442a33 100644 --- a/go.mod +++ b/go.mod @@ -38,7 +38,7 @@ require ( github.com/oxtoacart/bpool v0.0.0-20190530202638-03653db5a59c github.com/pkg/errors v0.8.1 github.com/stretchr/testify v1.4.0 - go.uber.org/zap v1.12.0 // indirect + go.uber.org/zap v1.12.0 golang.org/x/crypto v0.0.0-20191108234033-bd318be0434a golang.org/x/net v0.0.0-20191109021931-daa7c04131f5 google.golang.org/grpc v1.25.1 diff --git a/registry/etcd/etcd.go b/registry/etcd/etcd.go index a48932fc..c93a2801 100644 --- a/registry/etcd/etcd.go +++ b/registry/etcd/etcd.go @@ -18,6 +18,7 @@ import ( "github.com/micro/go-micro/registry" "github.com/micro/go-micro/util/log" hash "github.com/mitchellh/hashstructure" + "go.uber.org/zap" ) var ( @@ -73,6 +74,10 @@ func configure(e *etcdRegistry, opts ...registry.Option) error { config.Username = u.Username config.Password = u.Password } + cfg, ok := e.options.Context.Value(logConfigKey{}).(*zap.Config) + if ok && cfg != nil { + config.LogConfig = cfg + } } var cAddrs []string diff --git a/registry/etcd/options.go b/registry/etcd/options.go index 46bacc09..bc69b23b 100644 --- a/registry/etcd/options.go +++ b/registry/etcd/options.go @@ -4,10 +4,13 @@ import ( "context" "github.com/micro/go-micro/registry" + "go.uber.org/zap" ) type authKey struct{} +type logConfigKey struct{} + type authCreds struct { Username string Password string @@ -22,3 +25,13 @@ func Auth(username, password string) registry.Option { o.Context = context.WithValue(o.Context, authKey{}, &authCreds{Username: username, Password: password}) } } + +// LogConfig allows you to set etcd log config +func LogConfig(config *zap.Config) registry.Option { + return func(o *registry.Options) { + if o.Context == nil { + o.Context = context.Background() + } + o.Context = context.WithValue(o.Context, authKey{}, config) + } +}