From ec0d8a0c0795cc8844082cf68e561c4d84b564af Mon Sep 17 00:00:00 2001 From: Roman Khafizianov Date: Fri, 10 Mar 2023 19:18:15 +0100 Subject: [PATCH 1/3] fix replacing existing logger --- app/logger/ctxfiled.go | 7 ++- app/logger/log.go | 48 ++++++++++++++----- commonspace/object/acl/list/aclstate.go | 7 +-- .../object/tree/objecttree/treebuilder.go | 5 +- 4 files changed, 48 insertions(+), 19 deletions(-) diff --git a/app/logger/ctxfiled.go b/app/logger/ctxfiled.go index 83d8bba4..5597ba54 100644 --- a/app/logger/ctxfiled.go +++ b/app/logger/ctxfiled.go @@ -32,6 +32,7 @@ func CtxGetFields(ctx context.Context) (fields []zap.Field) { type CtxLogger struct { *zap.Logger + name string } func (cl CtxLogger) DebugCtx(ctx context.Context, msg string, fields ...zap.Field) { @@ -51,5 +52,9 @@ func (cl CtxLogger) ErrorCtx(ctx context.Context, msg string, fields ...zap.Fiel } func (cl CtxLogger) With(fields ...zap.Field) CtxLogger { - return CtxLogger{cl.Logger.With(fields...)} + return CtxLogger{cl.Logger.With(fields...), cl.name} +} + +func (cl CtxLogger) Sugar() *zap.SugaredLogger { + return NewNamedSugared(cl.name) } diff --git a/app/logger/log.go b/app/logger/log.go index 264cdaf1..e41c20d1 100644 --- a/app/logger/log.go +++ b/app/logger/log.go @@ -8,12 +8,13 @@ import ( ) var ( - mu sync.Mutex - logger *zap.Logger - loggerConfig zap.Config - namedLevels = make(map[string]zap.AtomicLevel) - namedGlobs = make(map[string]glob.Glob) - namedLoggers = make(map[string]CtxLogger) + mu sync.Mutex + logger *zap.Logger + loggerConfig zap.Config + namedLevels = make(map[string]zap.AtomicLevel) + namedGlobs = make(map[string]glob.Glob) + namedLoggers = make(map[string]CtxLogger) + namedSugarLoggers = make(map[string]*zap.SugaredLogger) ) func init() { @@ -59,10 +60,18 @@ func SetNamedLevels(l map[string]zap.AtomicLevel) { for name, nl := range namedLoggers { level := getLevel(name) - // this can be racy, but - nl.Logger = zap.New(logger.Core()).WithOptions( + newCore := zap.New(logger.Core()).Named(name).WithOptions( zap.IncreaseLevel(level), - ).Named(name) + ) + *(nl.Logger) = *newCore + } + + for name, nl := range namedSugarLoggers { + level := getLevel(name) + newCore := zap.New(logger.Core()).Named(name).WithOptions( + zap.IncreaseLevel(level), + ).Sugar() + *(nl) = *newCore } } @@ -100,11 +109,24 @@ func NewNamed(name string, fields ...zap.Field) CtxLogger { } level := getLevel(name) - l := zap.New(logger.Core()).WithOptions( - zap.IncreaseLevel(level), - ).Named(name) + l := zap.New(logger.Core()).Named(name).WithOptions(zap.IncreaseLevel(level), + zap.Fields(fields...)) - ctxL := CtxLogger{l} + ctxL := CtxLogger{Logger: l, name: name} namedLoggers[name] = ctxL return ctxL } + +func NewNamedSugared(name string) *zap.SugaredLogger { + mu.Lock() + defer mu.Unlock() + + if l, nameExists := namedSugarLoggers[name]; nameExists { + return l + } + + level := getLevel(name) + l := zap.New(logger.Core()).Named(name).Sugar().WithOptions(zap.IncreaseLevel(level)) + namedSugarLoggers[name] = l + return l +} diff --git a/commonspace/object/acl/list/aclstate.go b/commonspace/object/acl/list/aclstate.go index 9808dddf..3acb0166 100644 --- a/commonspace/object/acl/list/aclstate.go +++ b/commonspace/object/acl/list/aclstate.go @@ -4,8 +4,10 @@ import ( "bytes" "errors" "fmt" + "hash/fnv" + "github.com/anytypeio/any-sync/app/logger" - aclrecordproto "github.com/anytypeio/any-sync/commonspace/object/acl/aclrecordproto" + "github.com/anytypeio/any-sync/commonspace/object/acl/aclrecordproto" "github.com/anytypeio/any-sync/commonspace/object/keychain" "github.com/anytypeio/any-sync/util/keys" "github.com/anytypeio/any-sync/util/keys/asymmetric/encryptionkey" @@ -13,10 +15,9 @@ import ( "github.com/anytypeio/any-sync/util/keys/symmetric" "github.com/gogo/protobuf/proto" "go.uber.org/zap" - "hash/fnv" ) -var log = logger.NewNamed("acllist").Sugar() +var log = logger.NewNamedSugared("acllist") var ( ErrNoSuchUser = errors.New("no such user") diff --git a/commonspace/object/tree/objecttree/treebuilder.go b/commonspace/object/tree/objecttree/treebuilder.go index 113b8381..78ccceea 100644 --- a/commonspace/object/tree/objecttree/treebuilder.go +++ b/commonspace/object/tree/objecttree/treebuilder.go @@ -4,15 +4,16 @@ import ( "context" "errors" "fmt" + "time" + "github.com/anytypeio/any-sync/app/logger" "github.com/anytypeio/any-sync/commonspace/object/tree/treestorage" "github.com/anytypeio/any-sync/util/slice" "go.uber.org/zap" - "time" ) var ( - log = logger.NewNamed("acltree").Sugar() + log = logger.NewNamedSugared("acltree") ErrEmpty = errors.New("logs empty") ) From df9a5f11ae590c5cc30fea15d4944e2fbc7c05bf Mon Sep 17 00:00:00 2001 From: Roman Khafizianov Date: Fri, 10 Mar 2023 19:32:20 +0100 Subject: [PATCH 2/3] cleanup logger names --- commonspace/object/acl/list/aclstate.go | 2 +- commonspace/object/tree/objecttree/treebuilder.go | 2 +- net/peer/peer.go | 7 ++++--- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/commonspace/object/acl/list/aclstate.go b/commonspace/object/acl/list/aclstate.go index 3acb0166..fb6d4b49 100644 --- a/commonspace/object/acl/list/aclstate.go +++ b/commonspace/object/acl/list/aclstate.go @@ -17,7 +17,7 @@ import ( "go.uber.org/zap" ) -var log = logger.NewNamedSugared("acllist") +var log = logger.NewNamedSugared("common.commonspace.acllist") var ( ErrNoSuchUser = errors.New("no such user") diff --git a/commonspace/object/tree/objecttree/treebuilder.go b/commonspace/object/tree/objecttree/treebuilder.go index 78ccceea..edaa3ede 100644 --- a/commonspace/object/tree/objecttree/treebuilder.go +++ b/commonspace/object/tree/objecttree/treebuilder.go @@ -13,7 +13,7 @@ import ( ) var ( - log = logger.NewNamedSugared("acltree") + log = logger.NewNamedSugared("common.commonspace.objecttree") ErrEmpty = errors.New("logs empty") ) diff --git a/net/peer/peer.go b/net/peer/peer.go index 9c9f547d..21fb85f8 100644 --- a/net/peer/peer.go +++ b/net/peer/peer.go @@ -2,15 +2,16 @@ package peer import ( "context" + "sync/atomic" + "time" + "github.com/anytypeio/any-sync/app/logger" "github.com/libp2p/go-libp2p/core/sec" "go.uber.org/zap" "storj.io/drpc" - "sync/atomic" - "time" ) -var log = logger.NewNamed("peer") +var log = logger.NewNamed("net.peer") func NewPeer(sc sec.SecureConn, conn drpc.Conn) Peer { return &peer{ From 86dcc83461541e201a27d70541d2f6d3ef262cf2 Mon Sep 17 00:00:00 2001 From: Roman Khafizianov Date: Mon, 13 Mar 2023 14:14:55 +0100 Subject: [PATCH 3/3] change logger name --- net/peer/peer.go | 2 +- net/timeoutconn/conn.go | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/net/peer/peer.go b/net/peer/peer.go index 21fb85f8..21eee669 100644 --- a/net/peer/peer.go +++ b/net/peer/peer.go @@ -11,7 +11,7 @@ import ( "storj.io/drpc" ) -var log = logger.NewNamed("net.peer") +var log = logger.NewNamed("common.net.peer") func NewPeer(sc sec.SecureConn, conn drpc.Conn) Peer { return &peer{ diff --git a/net/timeoutconn/conn.go b/net/timeoutconn/conn.go index 0f5c5d30..62917dbc 100644 --- a/net/timeoutconn/conn.go +++ b/net/timeoutconn/conn.go @@ -2,14 +2,15 @@ package timeoutconn import ( "errors" - "github.com/anytypeio/any-sync/app/logger" - "go.uber.org/zap" "net" "os" "time" + + "github.com/anytypeio/any-sync/app/logger" + "go.uber.org/zap" ) -var log = logger.NewNamed("net.timeoutconn") +var log = logger.NewNamed("common.net.timeoutconn") type Conn struct { net.Conn