(ent Entry, fields []Field)
| 359 | } |
| 360 | |
| 361 | func (enc *jsonEncoder) EncodeEntry(ent Entry, fields []Field) (*buffer.Buffer, error) { |
| 362 | final := enc.clone() |
| 363 | final.buf.AppendByte('{') |
| 364 | |
| 365 | if final.LevelKey != "" && final.EncodeLevel != nil { |
| 366 | final.addKey(final.LevelKey) |
| 367 | cur := final.buf.Len() |
| 368 | final.EncodeLevel(ent.Level, final) |
| 369 | if cur == final.buf.Len() { |
| 370 | // User-supplied EncodeLevel was a no-op. Fall back to strings to keep |
| 371 | // output JSON valid. |
| 372 | final.AppendString(ent.Level.String()) |
| 373 | } |
| 374 | } |
| 375 | if final.TimeKey != "" && !ent.Time.IsZero() { |
| 376 | final.AddTime(final.TimeKey, ent.Time) |
| 377 | } |
| 378 | if ent.LoggerName != "" && final.NameKey != "" { |
| 379 | final.addKey(final.NameKey) |
| 380 | cur := final.buf.Len() |
| 381 | nameEncoder := final.EncodeName |
| 382 | |
| 383 | // if no name encoder provided, fall back to FullNameEncoder for backwards |
| 384 | // compatibility |
| 385 | if nameEncoder == nil { |
| 386 | nameEncoder = FullNameEncoder |
| 387 | } |
| 388 | |
| 389 | nameEncoder(ent.LoggerName, final) |
| 390 | if cur == final.buf.Len() { |
| 391 | // User-supplied EncodeName was a no-op. Fall back to strings to |
| 392 | // keep output JSON valid. |
| 393 | final.AppendString(ent.LoggerName) |
| 394 | } |
| 395 | } |
| 396 | if ent.Caller.Defined { |
| 397 | if final.CallerKey != "" { |
| 398 | final.addKey(final.CallerKey) |
| 399 | cur := final.buf.Len() |
| 400 | final.EncodeCaller(ent.Caller, final) |
| 401 | if cur == final.buf.Len() { |
| 402 | // User-supplied EncodeCaller was a no-op. Fall back to strings to |
| 403 | // keep output JSON valid. |
| 404 | final.AppendString(ent.Caller.String()) |
| 405 | } |
| 406 | } |
| 407 | if final.FunctionKey != "" { |
| 408 | final.addKey(final.FunctionKey) |
| 409 | final.AppendString(ent.Caller.Function) |
| 410 | } |
| 411 | } |
| 412 | if final.MessageKey != "" { |
| 413 | final.addKey(enc.MessageKey) |
| 414 | final.AppendString(ent.Message) |
| 415 | } |
| 416 | if enc.buf.Len() > 0 { |
| 417 | final.addElementSeparator() |
| 418 | final.buf.Write(enc.buf.Bytes()) |
nothing calls this directly
no test coverage detected