github.com/ydb-platform/ydb-go-sdk/v3@v3.89.2/log/discovery.go (about) 1 package log 2 3 import ( 4 "time" 5 6 "github.com/ydb-platform/ydb-go-sdk/v3/internal/kv" 7 "github.com/ydb-platform/ydb-go-sdk/v3/trace" 8 ) 9 10 // Discovery makes trace.Discovery with logging events from details 11 func Discovery(l Logger, d trace.Detailer, opts ...Option) (t trace.Discovery) { 12 return internalDiscovery(wrapLogger(l, opts...), d) 13 } 14 15 func internalDiscovery(l Logger, d trace.Detailer) (t trace.Discovery) { 16 t.OnDiscover = func(info trace.DiscoveryDiscoverStartInfo) func(trace.DiscoveryDiscoverDoneInfo) { 17 if d.Details()&trace.DiscoveryEvents == 0 { 18 return nil 19 } 20 ctx := with(*info.Context, DEBUG, "ydb", "discovery", "list", "endpoints") 21 l.Log(ctx, "start", 22 kv.String("address", info.Address), 23 kv.String("database", info.Database), 24 ) 25 start := time.Now() 26 27 return func(info trace.DiscoveryDiscoverDoneInfo) { 28 if info.Error == nil { 29 l.Log(WithLevel(ctx, INFO), "done", 30 kv.Latency(start), 31 kv.Stringer("endpoints", kv.Endpoints(info.Endpoints)), 32 ) 33 } else { 34 l.Log(WithLevel(ctx, ERROR), "failed", 35 kv.Error(info.Error), 36 kv.Latency(start), 37 kv.Version(), 38 ) 39 } 40 } 41 } 42 t.OnWhoAmI = func(info trace.DiscoveryWhoAmIStartInfo) func(doneInfo trace.DiscoveryWhoAmIDoneInfo) { 43 if d.Details()&trace.DiscoveryEvents == 0 { 44 return nil 45 } 46 ctx := with(*info.Context, TRACE, "ydb", "discovery", "whoAmI") 47 l.Log(ctx, "start") 48 start := time.Now() 49 50 return func(info trace.DiscoveryWhoAmIDoneInfo) { 51 if info.Error == nil { 52 l.Log(ctx, "done", 53 kv.Latency(start), 54 kv.String("user", info.User), 55 kv.Strings("groups", info.Groups), 56 ) 57 } else { 58 l.Log(WithLevel(ctx, WARN), "failed", 59 kv.Error(info.Error), 60 kv.Latency(start), 61 kv.Version(), 62 ) 63 } 64 } 65 } 66 67 return t 68 }