@@ -12,6 +12,7 @@ import (
1212 "net/http"
1313 "os"
1414 "path/filepath"
15+ "strings"
1516 "sync"
1617 "time"
1718
@@ -32,6 +33,7 @@ import (
3233 "github.com/onflow/rosetta/log"
3334 "github.com/onflow/rosetta/model"
3435 "github.com/onflow/rosetta/process"
36+ "github.com/rs/zerolog"
3537 "golang.org/x/crypto/openpgp"
3638 "golang.org/x/crypto/openpgp/armor"
3739 "google.golang.org/grpc/codes"
@@ -636,8 +638,7 @@ func (i *Indexer) runConsensusFollower(ctx context.Context) {
636638 sporkDir := i .Chain .PathFor (spork .String ())
637639 i .downloadRootState (ctx , spork , sporkDir )
638640 dbDir := filepath .Join (sporkDir , "consensus" )
639- logger := log.Badger {Prefix : "consensus" }
640- pebbleDB , err := pebblestorage .SafeOpen (logger , dbDir )
641+ pebbleDB , err := pebblestorage .SafeOpen (NewPrefixedLogger ("consensus" ), dbDir )
641642 if err != nil {
642643 log .Fatalf ("Failed to open consensus database at %s: %s" , dbDir , err )
643644 }
@@ -766,3 +767,41 @@ type stateSnapshotHeader struct {
766767type stateSnapshotSeal struct {
767768 BlockID string
768769}
770+
771+ // NewPrefixedLogger creates a zerolog.Logger with a given prefix.
772+ // It respects LOG_LEVEL and JSON_LOGS env vars like the zap setup.
773+ func NewPrefixedLogger (prefix string ) zerolog.Logger {
774+ // decide writer: console vs JSON
775+ var w zerolog.LevelWriter
776+ jsonLogs := true
777+ switch strings .ToLower (os .Getenv ("JSON_LOGS" )) {
778+ case "" , "disable" , "disabled" , "false" , "off" , "0" :
779+ jsonLogs = false
780+ }
781+ if jsonLogs {
782+ w = os .Stderr // JSON is default for zerolog
783+ } else {
784+ cw := zerolog .NewConsoleWriter (func (w * zerolog.ConsoleWriter ) {
785+ w .Out = os .Stderr
786+ w .TimeFormat = zerolog .TimeFormatUnix
787+ })
788+ w = cw
789+ }
790+
791+ // set level from LOG_LEVEL
792+ levelStr := strings .ToLower (os .Getenv ("LOG_LEVEL" ))
793+ if levelStr == "" {
794+ levelStr = "info"
795+ }
796+ level , err := zerolog .ParseLevel (levelStr )
797+ if err != nil {
798+ level = zerolog .InfoLevel
799+ }
800+ zerolog .SetGlobalLevel (level )
801+
802+ // build logger with prefix and timestamp
803+ return zerolog .New (w ).With ().
804+ Timestamp ().
805+ Str ("prefix" , prefix ).
806+ Logger ()
807+ }
0 commit comments