From a4c54e5d8b42af387f33b6e6d1c1f372f6ac29d1 Mon Sep 17 00:00:00 2001 From: Karel Minarik Date: Wed, 7 Nov 2018 09:39:38 -0800 Subject: [PATCH] Fix the ConsoleWriter default parts order (#113) In order to prevent incorrect output when somebody uses a different name eg. for the "MessageFieldName", the `consoleDefaultPartsOrder` variable has been switched to a function, which is called in `Write()`, in order to pick up the custom name. Related: rs/zerolog#92 --- console.go | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/console.go b/console.go index 95bfd27..5730f75 100644 --- a/console.go +++ b/console.go @@ -38,11 +38,13 @@ var ( consoleDefaultTimeFormat = time.Kitchen consoleDefaultFormatter = func(i interface{}) string { return fmt.Sprintf("%s", i) } - consoleDefaultPartsOrder = []string{ - TimestampFieldName, - LevelFieldName, - CallerFieldName, - MessageFieldName, + consoleDefaultPartsOrder = func() []string { + return []string{ + TimestampFieldName, + LevelFieldName, + CallerFieldName, + MessageFieldName, + } } consoleNoColor = false @@ -82,7 +84,7 @@ func NewConsoleWriter(options ...func(w *ConsoleWriter)) ConsoleWriter { w := ConsoleWriter{ Out: os.Stdout, TimeFormat: consoleDefaultTimeFormat, - PartsOrder: consoleDefaultPartsOrder, + PartsOrder: consoleDefaultPartsOrder(), } for _, opt := range options { @@ -95,7 +97,7 @@ func NewConsoleWriter(options ...func(w *ConsoleWriter)) ConsoleWriter { // Write transforms the JSON input with formatters and appends to w.Out. func (w ConsoleWriter) Write(p []byte) (n int, err error) { if w.PartsOrder == nil { - w.PartsOrder = consoleDefaultPartsOrder + w.PartsOrder = consoleDefaultPartsOrder() } if w.TimeFormat == "" && consoleTimeFormat != consoleDefaultTimeFormat { consoleTimeFormat = consoleDefaultTimeFormat