json_formatter: always cast errors to strings

Fixes #137
This commit is contained in:
Simon Eskildsen
2015-03-09 15:15:08 +00:00
parent 53adda1d3e
commit 8287db7934
2 changed files with 53 additions and 1 deletions
+7 -1
View File
@@ -11,7 +11,13 @@ type JSONFormatter struct{}
func (f *JSONFormatter) Format(entry *Entry) ([]byte, error) {
data := make(Fields, len(entry.Data)+3)
for k, v := range entry.Data {
data[k] = v
// Otherwise errors are ignored by `encoding/json`
// https://github.com/Sirupsen/logrus/issues/137
if err, ok := v.(error); ok {
data[k] = err.Error()
} else {
data[k] = v
}
}
prefixFieldClashes(data)
data["time"] = entry.Time.Format(time.RFC3339)