forked from mirror/logrus
Merge pull request #314 from vend/logstash-immutable-event
avoid modifying the entry by copying all fields and values
This commit is contained in:
commit
f7f79f729e
|
@ -17,38 +17,43 @@ type LogstashFormatter struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *LogstashFormatter) Format(entry *logrus.Entry) ([]byte, error) {
|
func (f *LogstashFormatter) Format(entry *logrus.Entry) ([]byte, error) {
|
||||||
entry.Data["@version"] = 1
|
fields := make(logrus.Fields)
|
||||||
|
for k, v := range entry.Data {
|
||||||
|
fields[k] = v
|
||||||
|
}
|
||||||
|
|
||||||
|
fields["@version"] = 1
|
||||||
|
|
||||||
if f.TimestampFormat == "" {
|
if f.TimestampFormat == "" {
|
||||||
f.TimestampFormat = logrus.DefaultTimestampFormat
|
f.TimestampFormat = logrus.DefaultTimestampFormat
|
||||||
}
|
}
|
||||||
|
|
||||||
entry.Data["@timestamp"] = entry.Time.Format(f.TimestampFormat)
|
fields["@timestamp"] = entry.Time.Format(f.TimestampFormat)
|
||||||
|
|
||||||
// set message field
|
// set message field
|
||||||
v, ok := entry.Data["message"]
|
v, ok := entry.Data["message"]
|
||||||
if ok {
|
if ok {
|
||||||
entry.Data["fields.message"] = v
|
fields["fields.message"] = v
|
||||||
}
|
}
|
||||||
entry.Data["message"] = entry.Message
|
fields["message"] = entry.Message
|
||||||
|
|
||||||
// set level field
|
// set level field
|
||||||
v, ok = entry.Data["level"]
|
v, ok = entry.Data["level"]
|
||||||
if ok {
|
if ok {
|
||||||
entry.Data["fields.level"] = v
|
fields["fields.level"] = v
|
||||||
}
|
}
|
||||||
entry.Data["level"] = entry.Level.String()
|
fields["level"] = entry.Level.String()
|
||||||
|
|
||||||
// set type field
|
// set type field
|
||||||
if f.Type != "" {
|
if f.Type != "" {
|
||||||
v, ok = entry.Data["type"]
|
v, ok = entry.Data["type"]
|
||||||
if ok {
|
if ok {
|
||||||
entry.Data["fields.type"] = v
|
fields["fields.type"] = v
|
||||||
}
|
}
|
||||||
entry.Data["type"] = f.Type
|
fields["type"] = f.Type
|
||||||
}
|
}
|
||||||
|
|
||||||
serialized, err := json.Marshal(entry.Data)
|
serialized, err := json.Marshal(fields)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("Failed to marshal fields to JSON, %v", err)
|
return nil, fmt.Errorf("Failed to marshal fields to JSON, %v", err)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue