MCPcopy
hub / github.com/rs/zerolog / writeFields

Method writeFields

console.go:186–287  ·  view source on GitHub ↗

writeFields appends formatted key-value pairs to buf.

(evt map[string]interface{}, buf *bytes.Buffer)

Source from the content-addressed store, hash-verified

184
185// writeFields appends formatted key-value pairs to buf.
186func (w ConsoleWriter) writeFields(evt map[string]interface{}, buf *bytes.Buffer) {
187 var fields = make([]string, 0, len(evt))
188 for field := range evt {
189 var isExcluded bool
190 for _, excluded := range w.FieldsExclude {
191 if field == excluded {
192 isExcluded = true
193 break
194 }
195 }
196 if isExcluded {
197 continue
198 }
199
200 switch field {
201 case LevelFieldName, TimestampFieldName, MessageFieldName, CallerFieldName:
202 continue
203 }
204 fields = append(fields, field)
205 }
206
207 if len(w.FieldsOrder) > 0 {
208 w.orderFields(fields)
209 } else {
210 sort.Strings(fields)
211 }
212
213 // Write space only if something has already been written to the buffer, and if there are fields.
214 if buf.Len() > 0 && len(fields) > 0 {
215 buf.WriteByte(' ')
216 }
217
218 // Move the "error" field to the front
219 ei := sort.Search(len(fields), func(i int) bool { return fields[i] >= ErrorFieldName })
220 if ei < len(fields) && fields[ei] == ErrorFieldName {
221 fields[ei] = ""
222 fields = append([]string{ErrorFieldName}, fields...)
223 var xfields = make([]string, 0, len(fields))
224 for _, field := range fields {
225 if field == "" { // Skip empty fields
226 continue
227 }
228 xfields = append(xfields, field)
229 }
230 fields = xfields
231 }
232
233 for i, field := range fields {
234 var fn Formatter
235 var fv Formatter
236
237 if field == ErrorFieldName {
238 if w.FormatErrFieldName == nil {
239 fn = consoleDefaultFormatErrFieldName(w.NoColor)
240 } else {
241 fn = w.FormatErrFieldName
242 }
243

Callers 1

WriteMethod · 0.95

Calls 7

orderFieldsMethod · 0.95
needsQuoteFunction · 0.85
InterfaceMarshalFuncFunction · 0.85
colorizeFunction · 0.85

Tested by

no test coverage detected