Better handling of prefix field

This commit is contained in:
Brendan Abolivier 2017-08-23 11:42:59 +01:00
parent 51d1ad692c
commit 624c12b959
No known key found for this signature in database
GPG key ID: 8EF1500759F70623

View file

@ -29,7 +29,9 @@ type dendriteFormatter struct {
logrus.TextFormatter logrus.TextFormatter
} }
func (f dendriteFormatter) Format(entry *logrus.Entry) ([]byte, error) { func (f dendriteFormatter) Format(entry *logrus.Entry) (format []byte, err error) {
entry.Time = entry.Time.UTC()
if _, ok := entry.Data["prefix"]; ok { if _, ok := entry.Data["prefix"]; ok {
prefix, ok := entry.Data["prefix"].(string) prefix, ok := entry.Data["prefix"].(string)
if !ok { if !ok {
@ -42,12 +44,27 @@ func (f dendriteFormatter) Format(entry *logrus.Entry) ([]byte, error) {
prefix = ansi.Color(prefix, "white+b") prefix = ansi.Color(prefix, "white+b")
} }
entry.Message = fmt.Sprintf("%s: %s", prefix, entry.Message) entry.Message = fmt.Sprintf("%s: %s\t", prefix, entry.Message)
delete(entry.Data, "prefix")
// Generate the formatted log without the prefix as a field
// Use a copy of the entry so the same entry isn't altered by multiple
// fields at the same time
entryCpy := *entry
// Go doesn't perform deep copies, so the fields have to be manually
// copied
fields := make(logrus.Fields)
for k, v := range entry.Data {
if k != "prefix" {
fields[k] = v
}
}
entryCpy.Data = fields
format, err = f.TextFormatter.Format(&entryCpy)
} else {
format, err = f.TextFormatter.Format(entry)
} }
entry.Time = entry.Time.UTC() return
return f.TextFormatter.Format(entry)
} }
// SetupLogging configures the logging format and destination(s). // SetupLogging configures the logging format and destination(s).