Skip to content

Commit 6e09e55

Browse files
committed
Fix logger race condition by initializing in init() and removing reconfiguration from hot path
1 parent 1832ff4 commit 6e09e55

File tree

1 file changed

+19
-5
lines changed

1 file changed

+19
-5
lines changed

utils/lavalog.go

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,15 @@ func LogAttr(key string, value interface{}) Attribute {
6565
return Attribute{Key: key, Value: value}
6666
}
6767

68+
func init() {
69+
zerolog.TimeFieldFormat = zerolog.TimeFormatUnix
70+
if JsonFormat {
71+
zerologlog.Logger = zerologlog.Output(os.Stderr).Level(defaultGlobalLogLevel)
72+
} else {
73+
zerologlog.Logger = zerologlog.Output(zerolog.ConsoleWriter{Out: os.Stderr, NoColor: NoColor, TimeFormat: time.Stamp}).Level(defaultGlobalLogLevel)
74+
}
75+
}
76+
6877
func LogLavaEvent(ctx sdk.Context, logger log.Logger, name string, attributes map[string]string, description string) {
6978
LogLavaEventWithLevel(ctx, logger, name, attributes, description, LAVA_LOG_INFO)
7079
}
@@ -120,6 +129,11 @@ func SetGlobalLoggingLevel(logLevel string) {
120129
// setting global level prevents us from having two different levels for example one for stdout and one for rolling log.
121130
// zerolog.SetGlobalLevel(getLogLevel(logLevel))
122131
defaultGlobalLogLevel = getLogLevel(logLevel)
132+
if JsonFormat {
133+
zerologlog.Logger = zerologlog.Output(os.Stderr).Level(defaultGlobalLogLevel)
134+
} else {
135+
zerologlog.Logger = zerologlog.Output(zerolog.ConsoleWriter{Out: os.Stderr, NoColor: NoColor, TimeFormat: time.Stamp}).Level(defaultGlobalLogLevel)
136+
}
123137
LavaFormatInfo("setting log level", Attribute{Key: "loglevel", Value: logLevel})
124138
}
125139

@@ -269,11 +283,11 @@ func StrValue(val interface{}) string {
269283

270284
func LavaFormatLog(description string, err error, attributes []Attribute, severity uint) error {
271285
zerolog.TimeFieldFormat = zerolog.TimeFormatUnix
272-
if JsonFormat {
273-
zerologlog.Logger = zerologlog.Output(os.Stderr).Level(defaultGlobalLogLevel)
274-
} else {
275-
zerologlog.Logger = zerologlog.Output(zerolog.ConsoleWriter{Out: os.Stderr, NoColor: NoColor, TimeFormat: time.Stamp}).Level(defaultGlobalLogLevel)
276-
}
286+
// if JsonFormat {
287+
// zerologlog.Logger = zerologlog.Output(os.Stderr).Level(defaultGlobalLogLevel)
288+
// } else {
289+
// zerologlog.Logger = zerologlog.Output(zerolog.ConsoleWriter{Out: os.Stderr, NoColor: NoColor, TimeFormat: time.Stamp}).Level(defaultGlobalLogLevel)
290+
// }
277291

278292
// depending on the build flag, this log function will log either a warning or an error.
279293
// the purpose of this function is to fail E2E tests and not allow unexpected behavior to reach main.

0 commit comments

Comments
 (0)