writeFields appends formatted key-value pairs to buf.
(evt map[string]interface{}, buf *bytes.Buffer)
| 184 | |
| 185 | // writeFields appends formatted key-value pairs to buf. |
| 186 | func (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 |
no test coverage detected