From 927c3807b2d189e9abed7fac4ed79a38f903730c Mon Sep 17 00:00:00 2001 From: Ramasai Venkatsitarambhaskar Tadepalli Date: Fri, 11 Nov 2022 09:38:06 -0500 Subject: [PATCH] Evaluate message formatting only once while formatting the log --- v2/slogger/logger.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) 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 {