mirror of https://github.com/sirupsen/logrus.git
text_formatter: add support for GoString
Allow logging fields with their GoString result. When using GoString, never add extra quotes, regardless of the ForceQuote setting: the GoString format should take care of this. Note that if some field does not implement the GoString interface, we fall through to the remaining logic, which obeys ForceQuote as usual.
This commit is contained in:
parent
67a7fdcf74
commit
d87f80b7a0
|
@ -34,6 +34,10 @@ type TextFormatter struct {
|
||||||
// Force disabling colors.
|
// Force disabling colors.
|
||||||
DisableColors bool
|
DisableColors bool
|
||||||
|
|
||||||
|
// try GoString() for field representation: if that works,
|
||||||
|
// don't quote the field at all, just print the result.
|
||||||
|
UseGoString bool
|
||||||
|
|
||||||
// Force quoting of all values
|
// Force quoting of all values
|
||||||
ForceQuote bool
|
ForceQuote bool
|
||||||
|
|
||||||
|
@ -313,6 +317,13 @@ func (f *TextFormatter) appendKeyValue(b *bytes.Buffer, key string, value interf
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *TextFormatter) appendValue(b *bytes.Buffer, value interface{}) {
|
func (f *TextFormatter) appendValue(b *bytes.Buffer, value interface{}) {
|
||||||
|
if f.UseGoString {
|
||||||
|
stringer, ok := value.(fmt.GoStringer)
|
||||||
|
if ok {
|
||||||
|
b.WriteString(stringer.GoString())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
stringVal, ok := value.(string)
|
stringVal, ok := value.(string)
|
||||||
if !ok {
|
if !ok {
|
||||||
stringVal = fmt.Sprint(value)
|
stringVal = fmt.Sprint(value)
|
||||||
|
|
Loading…
Reference in New Issue