From 2d227edaf92f8c006bd523e41e84013a2f18ddf3 Mon Sep 17 00:00:00 2001 From: WithoutPants <53250216+WithoutPants@users.noreply.github.com> Date: Fri, 25 Mar 2022 12:00:17 +1100 Subject: [PATCH] Only cache log items that meet minimum log level (#2421) --- internal/log/logger.go | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/internal/log/logger.go b/internal/log/logger.go index f55ad725b..fab6a070c 100644 --- a/internal/log/logger.go +++ b/internal/log/logger.go @@ -3,6 +3,7 @@ package log import ( "fmt" "os" + "strings" "sync" "time" @@ -94,27 +95,36 @@ func (log *Logger) SetLogLevel(level string) { func logLevelFromString(level string) logrus.Level { ret := logrus.InfoLevel - switch level { - case "Debug": + switch strings.ToLower(level) { + case "debug": ret = logrus.DebugLevel - case "Warning": + case "warning": ret = logrus.WarnLevel - case "Error": + case "error": ret = logrus.ErrorLevel - case "Trace": + case "trace": ret = logrus.TraceLevel } return ret } +func (log *Logger) addToCache(l *LogItem) { + // assumes mutex held + // only add to cache if meets minimum log level + level := logLevelFromString(l.Type) + if level <= log.logger.Level { + log.logCache = append([]LogItem{*l}, log.logCache...) + if len(log.logCache) > 30 { + log.logCache = log.logCache[:len(log.logCache)-1] + } + } +} + func (log *Logger) addLogItem(l *LogItem) { log.mutex.Lock() l.Time = time.Now() - log.logCache = append([]LogItem{*l}, log.logCache...) - if len(log.logCache) > 30 { - log.logCache = log.logCache[:len(log.logCache)-1] - } + log.addToCache(l) log.mutex.Unlock() go log.broadcastLogItem(l) }