Merge pull request #48 from anytypeio/fix-suggared-logger

fix replacing existing logger
This commit is contained in:
Roman Khafizianov 2023-03-13 14:15:26 +01:00 committed by GitHub
commit 1a01f361ad
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 56 additions and 25 deletions

View File

@ -32,6 +32,7 @@ func CtxGetFields(ctx context.Context) (fields []zap.Field) {
type CtxLogger struct { type CtxLogger struct {
*zap.Logger *zap.Logger
name string
} }
func (cl CtxLogger) DebugCtx(ctx context.Context, msg string, fields ...zap.Field) { 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 { 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)
} }

View File

@ -14,6 +14,7 @@ var (
namedLevels = make(map[string]zap.AtomicLevel) namedLevels = make(map[string]zap.AtomicLevel)
namedGlobs = make(map[string]glob.Glob) namedGlobs = make(map[string]glob.Glob)
namedLoggers = make(map[string]CtxLogger) namedLoggers = make(map[string]CtxLogger)
namedSugarLoggers = make(map[string]*zap.SugaredLogger)
) )
func init() { func init() {
@ -59,10 +60,18 @@ func SetNamedLevels(l map[string]zap.AtomicLevel) {
for name, nl := range namedLoggers { for name, nl := range namedLoggers {
level := getLevel(name) level := getLevel(name)
// this can be racy, but newCore := zap.New(logger.Core()).Named(name).WithOptions(
nl.Logger = zap.New(logger.Core()).WithOptions(
zap.IncreaseLevel(level), 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) level := getLevel(name)
l := zap.New(logger.Core()).WithOptions( l := zap.New(logger.Core()).Named(name).WithOptions(zap.IncreaseLevel(level),
zap.IncreaseLevel(level), zap.Fields(fields...))
).Named(name)
ctxL := CtxLogger{l} ctxL := CtxLogger{Logger: l, name: name}
namedLoggers[name] = ctxL namedLoggers[name] = ctxL
return 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
}

View File

@ -4,8 +4,10 @@ import (
"bytes" "bytes"
"errors" "errors"
"fmt" "fmt"
"hash/fnv"
"github.com/anytypeio/any-sync/app/logger" "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/commonspace/object/keychain"
"github.com/anytypeio/any-sync/util/keys" "github.com/anytypeio/any-sync/util/keys"
"github.com/anytypeio/any-sync/util/keys/asymmetric/encryptionkey" "github.com/anytypeio/any-sync/util/keys/asymmetric/encryptionkey"
@ -13,10 +15,9 @@ import (
"github.com/anytypeio/any-sync/util/keys/symmetric" "github.com/anytypeio/any-sync/util/keys/symmetric"
"github.com/gogo/protobuf/proto" "github.com/gogo/protobuf/proto"
"go.uber.org/zap" "go.uber.org/zap"
"hash/fnv"
) )
var log = logger.NewNamed("acllist").Sugar() var log = logger.NewNamedSugared("common.commonspace.acllist")
var ( var (
ErrNoSuchUser = errors.New("no such user") ErrNoSuchUser = errors.New("no such user")

View File

@ -4,15 +4,16 @@ import (
"context" "context"
"errors" "errors"
"fmt" "fmt"
"time"
"github.com/anytypeio/any-sync/app/logger" "github.com/anytypeio/any-sync/app/logger"
"github.com/anytypeio/any-sync/commonspace/object/tree/treestorage" "github.com/anytypeio/any-sync/commonspace/object/tree/treestorage"
"github.com/anytypeio/any-sync/util/slice" "github.com/anytypeio/any-sync/util/slice"
"go.uber.org/zap" "go.uber.org/zap"
"time"
) )
var ( var (
log = logger.NewNamed("acltree").Sugar() log = logger.NewNamedSugared("common.commonspace.objecttree")
ErrEmpty = errors.New("logs empty") ErrEmpty = errors.New("logs empty")
) )

View File

@ -2,15 +2,16 @@ package peer
import ( import (
"context" "context"
"sync/atomic"
"time"
"github.com/anytypeio/any-sync/app/logger" "github.com/anytypeio/any-sync/app/logger"
"github.com/libp2p/go-libp2p/core/sec" "github.com/libp2p/go-libp2p/core/sec"
"go.uber.org/zap" "go.uber.org/zap"
"storj.io/drpc" "storj.io/drpc"
"sync/atomic"
"time"
) )
var log = logger.NewNamed("peer") var log = logger.NewNamed("common.net.peer")
func NewPeer(sc sec.SecureConn, conn drpc.Conn) Peer { func NewPeer(sc sec.SecureConn, conn drpc.Conn) Peer {
return &peer{ return &peer{

View File

@ -2,14 +2,15 @@ package timeoutconn
import ( import (
"errors" "errors"
"github.com/anytypeio/any-sync/app/logger"
"go.uber.org/zap"
"net" "net"
"os" "os"
"time" "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 { type Conn struct {
net.Conn net.Conn