privateLogw logs a message at a given level log the default logger. when the level is fatal, it will exit the program.
(lv Level, format string, keysAndValues []any)
| 108 | // privateLogw logs a message at a given level log the default logger. |
| 109 | // when the level is fatal, it will exit the program. |
| 110 | func (l *defaultLogger) privateLogw(lv Level, format string, keysAndValues []any) { |
| 111 | if l.level > lv { |
| 112 | return |
| 113 | } |
| 114 | level := lv.toString() |
| 115 | buf := bytebufferpool.Get() |
| 116 | buf.WriteString(level) |
| 117 | l.writeContext(buf) |
| 118 | |
| 119 | // Write format privateLog buffer |
| 120 | if format != "" { |
| 121 | buf.WriteString(format) |
| 122 | } |
| 123 | // Write keys and values privateLog buffer |
| 124 | if len(keysAndValues) > 0 { |
| 125 | if (len(keysAndValues) & 1) == 1 { |
| 126 | keysAndValues = append(keysAndValues, "KEYVALS UNPAIRED") |
| 127 | } |
| 128 | |
| 129 | for i := 0; i < len(keysAndValues); i += 2 { |
| 130 | if i > 0 || format != "" { |
| 131 | buf.WriteByte(' ') |
| 132 | } |
| 133 | switch key := keysAndValues[i].(type) { |
| 134 | case string: |
| 135 | buf.WriteString(key) |
| 136 | default: |
| 137 | _, _ = fmt.Fprint(buf, key) |
| 138 | } |
| 139 | buf.WriteByte('=') |
| 140 | buf.WriteString(utils.ToString(keysAndValues[i+1])) |
| 141 | } |
| 142 | } |
| 143 | |
| 144 | _ = l.stdlog.Output(l.depth, buf.String()) //nolint:errcheck // It is fine to ignore the error |
| 145 | if lv == LevelPanic { |
| 146 | panic(buf.String()) |
| 147 | } |
| 148 | buf.Reset() |
| 149 | bytebufferpool.Put(buf) |
| 150 | if lv == LevelFatal { |
| 151 | os.Exit(1) //nolint:revive // we want to exit the program when Fatal is called |
| 152 | } |
| 153 | } |
| 154 | |
| 155 | // Trace logs the given values at trace level. |
| 156 | func (l *defaultLogger) Trace(v ...any) { |