github.com/avenga/couper@v1.12.2/logging/hooks/json_color_formatter.go (about) 1 package hooks 2 3 import ( 4 "regexp" 5 6 "github.com/fatih/color" 7 "github.com/sirupsen/logrus" 8 ) 9 10 type JSONColorFormatter struct { 11 inner *logrus.JSONFormatter 12 } 13 14 func NewJSONColorFormatter(parent string, pretty bool) logrus.Formatter { 15 return &JSONColorFormatter{ 16 inner: &logrus.JSONFormatter{ 17 DataKey: parent, 18 FieldMap: logrus.FieldMap{ 19 logrus.FieldKeyTime: "timestamp", 20 logrus.FieldKeyMsg: "message", 21 }, 22 PrettyPrint: pretty, 23 }, 24 } 25 } 26 27 var keyRegex = regexp.MustCompile(`"(?:(?:[^"]|\\")*)"\s*:`) 28 29 func (jcf *JSONColorFormatter) Format(entry *logrus.Entry) ([]byte, error) { 30 b, err := jcf.inner.Format(entry) 31 if !jcf.inner.PrettyPrint || err != nil { 32 return b, err 33 } 34 35 result := keyRegex.ReplaceAllFunc(b, func(needle []byte) []byte { 36 return []byte(color.HiGreenString("%s", string(needle))) 37 }) 38 39 return result, err 40 }