text_formatter: fix race

This commit is contained in:
Simon Eskildsen
2017-02-05 19:10:19 -05:00
parent 1726e1744a
commit 11fbf0fa42
3 changed files with 12 additions and 6 deletions
+8 -6
View File
@@ -5,6 +5,7 @@ import (
"fmt"
"sort"
"strings"
"sync"
"time"
)
@@ -49,8 +50,8 @@ type TextFormatter struct {
DisableSorting bool
// Whether the logger's out is to a terminal
isTerminal bool
terminalDetermined bool
isTerminal bool
terminalOnce sync.Once
}
func (f *TextFormatter) Format(entry *Entry) ([]byte, error) {
@@ -71,10 +72,11 @@ func (f *TextFormatter) Format(entry *Entry) ([]byte, error) {
prefixFieldClashes(entry.Data)
if !f.terminalDetermined {
f.isTerminal = IsTerminal(entry.Logger.Out)
f.terminalDetermined = true
}
f.terminalOnce.Do(func() {
if entry.Logger != nil {
f.isTerminal = IsTerminal(entry.Logger.Out)
}
})
isColored := (f.ForceColors || f.isTerminal) && !f.DisableColors