diff --git a/v2/slogger/logger.go b/v2/slogger/logger.go index 0e971a6..b0d163c 100644 --- a/v2/slogger/logger.go +++ b/v2/slogger/logger.go @@ -36,6 +36,10 @@ type Log struct { MessageFmt string Args []interface{} Context *Context + + // Appendages to evaluate a message only once + message string + evalMsgOnce sync.Once } func SimpleLog(prefix string, level Level, errorCode ErrorCode, callerSkip int, messageFmt string, args ...interface{}) *Log { @@ -101,7 +105,10 @@ func getTruncatedMessage(old string) string { } func (self *Log) Message() string { - return getTruncatedMessage(fmt.Sprintf(self.MessageFmt, self.Args...)) + self.evalMsgOnce.Do(func() { + self.message = getTruncatedMessage(fmt.Sprintf(self.MessageFmt, self.Args...)) + }) + return self.message } type Logger struct {