diff --git a/Makefile b/Makefile index ab14b8c4..ab3b8f33 100644 --- a/Makefile +++ b/Makefile @@ -29,13 +29,14 @@ proto: $(GOGO_START) protoc --gogofaster_out=:. $(P_TEST_CHANGES_PATH_PB)/proto/*.proto $(eval PKGMAP := $$(P_TREE_CHANGES),$$(P_ACL_RECORDS)) $(GOGO_START) protoc --gogofaster_out=$(PKGMAP):. --go-drpc_out=protolib=github.com/gogo/protobuf:. common/commonspace/spacesyncproto/protos/*.proto + $(GOGO_START) protoc --gogofaster_out=:. --go-drpc_out=protolib=github.com/gogo/protobuf:. consensus/consensusproto/protos/*.proto + build: @$(eval FLAGS := $$(shell govvv -flags -pkg github.com/anytypeio/go-anytype-infrastructure-experiments/app)) go build -v -o bin/anytype-node -ldflags "$(FLAGS)" cmd/node/node.go -test-deps: - @echo 'Generating test mocks...' - @go install github.com/golang/mock/mockgen - @go generate ./... \ No newline at end of file +build-consensus: + @$(eval FLAGS := $$(shell govvv -flags -pkg github.com/anytypeio/go-anytype-infrastructure-experiments/app)) + go build -v -o bin/consensus-node -ldflags "$(FLAGS)" cmd/consensusnode/consensusnode.go diff --git a/app/logger/log.go b/app/logger/log.go index 99826bcf..a9f30252 100644 --- a/app/logger/log.go +++ b/app/logger/log.go @@ -1,21 +1,50 @@ package logger -import "go.uber.org/zap" +import ( + "go.uber.org/zap" + "sync" +) -var DefaultLogger *zap.Logger +var ( + mu sync.Mutex + defaultLogger *zap.Logger + levels = make(map[string]zap.AtomicLevel) + loggers = make(map[string]*zap.Logger) +) func init() { - DefaultLogger, _ = zap.NewDevelopment(zap.IncreaseLevel(zap.InfoLevel)) + defaultLogger, _ = zap.NewDevelopment() + zap.NewProduction() +} + +func SetDefault(l *zap.Logger) { + mu.Lock() + defer mu.Unlock() + *defaultLogger = *l + for name, l := range loggers { + *l = *defaultLogger.Named(name) + } +} + +func SetNamedLevels(l map[string]zap.AtomicLevel) { + mu.Lock() + defer mu.Unlock() + levels = l } func Default() *zap.Logger { - return DefaultLogger + mu.Lock() + defer mu.Unlock() + return defaultLogger } func NewNamed(name string, fields ...zap.Field) *zap.Logger { - l := DefaultLogger.Named(name) + mu.Lock() + defer mu.Unlock() + l := defaultLogger.Named(name) if len(fields) > 0 { l = l.With(fields...) } + loggers[name] = l return l } diff --git a/cmd/consensusnode/consensusnode.go b/cmd/consensusnode/consensusnode.go index c17166d8..491d7ce9 100644 --- a/cmd/consensusnode/consensusnode.go +++ b/cmd/consensusnode/consensusnode.go @@ -58,7 +58,7 @@ func main() { if err != nil { log.Fatal("can't open config file", zap.Error(err)) } - + conf.Log.ApplyGlobal() // bootstrap components a.Register(conf) Bootstrap(a) diff --git a/common/net/dialer/dialer.go b/common/net/dialer/dialer.go index 80d0d6f2..9de13e31 100644 --- a/common/net/dialer/dialer.go +++ b/common/net/dialer/dialer.go @@ -16,7 +16,7 @@ import ( "sync" ) -const CName = "net/dialer" +const CName = "common.net.dialer" var ErrArrdsNotFound = errors.New("addrs for peer not found") diff --git a/common/net/pool/pool.go b/common/net/pool/pool.go index 4b7c4c45..dfd15e5d 100644 --- a/common/net/pool/pool.go +++ b/common/net/pool/pool.go @@ -13,7 +13,7 @@ import ( ) const ( - CName = "net.pool" + CName = "common.net.pool" ) var log = logger.NewNamed(CName) diff --git a/common/net/rpc/server/drpcserver.go b/common/net/rpc/server/drpcserver.go index 3219a831..76131f27 100644 --- a/common/net/rpc/server/drpcserver.go +++ b/common/net/rpc/server/drpcserver.go @@ -18,7 +18,7 @@ import ( "time" ) -const CName = "net/drpcserver" +const CName = "common.net.drpcserver" var log = logger.NewNamed(CName) diff --git a/common/net/secure/service.go b/common/net/secure/service.go index d8ade632..3e70521d 100644 --- a/common/net/secure/service.go +++ b/common/net/secure/service.go @@ -16,7 +16,7 @@ import ( type HandshakeError error -const CName = "net/secure" +const CName = "common.net.secure" var log = logger.NewNamed(CName) diff --git a/config/config.go b/config/config.go index 2894015a..7bfd1746 100644 --- a/config/config.go +++ b/config/config.go @@ -30,6 +30,7 @@ type Config struct { Nodes []Node `yaml:"nodes"` Space Space `yaml:"space"` Metric Metric `yaml:"metric"` + Log Log `yaml:"log"` } func (c *Config) Init(a *app.App) (err error) { diff --git a/config/log.go b/config/log.go new file mode 100644 index 00000000..a09a8597 --- /dev/null +++ b/config/log.go @@ -0,0 +1,36 @@ +package config + +import ( + "github.com/anytypeio/go-anytype-infrastructure-experiments/app/logger" + "go.uber.org/zap" +) + +type Log struct { + Production bool `yaml:"production"` + DefaultLevel string `yaml:"defaultLevel"` + NamedLevels map[string]string `yaml:"namedLevels"` +} + +func (l Log) ApplyGlobal() { + var conf zap.Config + if l.Production { + conf = zap.NewProductionConfig() + } else { + conf = zap.NewDevelopmentConfig() + } + if defaultLevel, err := zap.ParseAtomicLevel(l.DefaultLevel); err == nil { + conf.Level = defaultLevel + } + var levels = make(map[string]zap.AtomicLevel) + for k, v := range l.NamedLevels { + if lev, err := zap.ParseAtomicLevel(v); err != nil { + levels[k] = lev + } + } + defaultLogger, err := conf.Build() + if err != nil { + logger.Default().Fatal("can't build logger", zap.Error(err)) + } + logger.SetDefault(defaultLogger) + logger.SetNamedLevels(levels) +} diff --git a/consensus/config/config.go b/consensus/config/config.go index 30bd4400..32ce5838 100644 --- a/consensus/config/config.go +++ b/consensus/config/config.go @@ -26,6 +26,7 @@ type Config struct { Account config.Account `yaml:"account"` Mongo Mongo `yaml:"mongo"` Metric config.Metric `yaml:"metric"` + Log config.Log `yaml:"log"` } func (c *Config) Init(a *app.App) (err error) { diff --git a/etc/configs/cons1.yml b/etc/configs/cons1.yml index 1b772966..326db359 100755 --- a/etc/configs/cons1.yml +++ b/etc/configs/cons1.yml @@ -11,4 +11,8 @@ mongo: database: consensus logCollection: log metric: - addr: "127.0.0.1:4000" \ No newline at end of file + addr: "127.0.0.1:4000" +log: + production: true + defaultLevel: debug +