Skip to content

Commit 7f02688

Browse files
authored
Merge pull request #413 from astef/astef-optimize_quote
Use strconv.AppendQuote instead of strconv.Quote for message formatting
2 parents 5496965 + a1604b5 commit 7f02688

File tree

3 files changed

+20
-8
lines changed

3 files changed

+20
-8
lines changed

klog.go

+7-3
Original file line numberDiff line numberDiff line change
@@ -809,12 +809,16 @@ func (l *loggingT) infoS(logger *logWriter, filter LogFilter, depth int, msg str
809809
// printS is called from infoS and errorS if logger is not specified.
810810
// set log severity by s
811811
func (l *loggingT) printS(err error, s severity.Severity, depth int, msg string, keysAndValues ...interface{}) {
812-
// Only create a new buffer if we don't have one cached.
813-
b := buffer.GetBuffer()
814812
// The message is always quoted, even if it contains line breaks.
815813
// If developers want multi-line output, they should use a small, fixed
816814
// message and put the multi-line output into a value.
817-
b.WriteString(strconv.Quote(msg))
815+
qMsg := make([]byte, 0, 1024)
816+
qMsg = strconv.AppendQuote(qMsg, msg)
817+
818+
// Only create a new buffer if we don't have one cached.
819+
b := buffer.GetBuffer()
820+
b.Write(qMsg)
821+
818822
if err != nil {
819823
serialize.KVListFormat(&b.Buffer, "err", err)
820824
}

klogr_slog.go

+5-1
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,12 @@ func slogOutput(file string, line int, now time.Time, err error, s severity.Seve
6363
}
6464

6565
// See printS.
66+
qMsg := make([]byte, 0, 1024)
67+
qMsg = strconv.AppendQuote(qMsg, msg)
68+
6669
b := buffer.GetBuffer()
67-
b.WriteString(strconv.Quote(msg))
70+
b.Write(qMsg)
71+
6872
if err != nil {
6973
serialize.KVListFormat(&b.Buffer, "err", err)
7074
}

textlogger/textlogger.go

+8-4
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,12 @@ func runtimeBacktrace(skip int) (string, int) {
114114
}
115115

116116
func (l *tlogger) printWithInfos(file string, line int, now time.Time, err error, s severity.Severity, msg string, kvList []interface{}) {
117+
// The message is always quoted, even if it contains line breaks.
118+
// If developers want multi-line output, they should use a small, fixed
119+
// message and put the multi-line output into a value.
120+
qMsg := make([]byte, 0, 1024)
121+
qMsg = strconv.AppendQuote(qMsg, msg)
122+
117123
// Only create a new buffer if we don't have one cached.
118124
b := buffer.GetBuffer()
119125
defer buffer.PutBuffer(b)
@@ -124,10 +130,8 @@ func (l *tlogger) printWithInfos(file string, line int, now time.Time, err error
124130
}
125131
b.FormatHeader(s, file, line, now)
126132

127-
// The message is always quoted, even if it contains line breaks.
128-
// If developers want multi-line output, they should use a small, fixed
129-
// message and put the multi-line output into a value.
130-
b.WriteString(strconv.Quote(msg))
133+
b.Write(qMsg)
134+
131135
if err != nil {
132136
serialize.KVFormat(&b.Buffer, "err", err)
133137
}

0 commit comments

Comments
 (0)