diff options
| author | Felix Hanley <felix@userspace.com.au> | 2017-11-23 03:42:55 +0000 |
|---|---|---|
| committer | Felix Hanley <felix@userspace.com.au> | 2017-11-23 03:42:55 +0000 |
| commit | f519e583e7f0db3dcf8fe3a34de9fdd56068030e (patch) | |
| tree | fa2bc89f3f8832a9dff529132a792636610c2b11 | |
| parent | 0c32eeb4ab785403131babedc9936e3aa84a52ce (diff) | |
| download | logger-f519e583e7f0db3dcf8fe3a34de9fdd56068030e.tar.gz logger-f519e583e7f0db3dcf8fe3a34de9fdd56068030e.tar.bz2 | |
Update JSON formatter
| -rw-r--r-- | json_writer.go | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/json_writer.go b/json_writer.go index 9ac1f5d..87d875c 100644 --- a/json_writer.go +++ b/json_writer.go @@ -1,14 +1,28 @@ package logger import ( + "bufio" "encoding/json" - "io" ) type JSONWriter struct{} -func (jw JSONWriter) Write(w io.Writer, m Message) { - err := json.NewEncoder(w).Encode(m) +func NewJSONWriter() *JSONWriter { + return &JSONWriter{} +} + +func (jw JSONWriter) Write(w *bufio.Writer, m Message) { + vals := map[string]interface{}{ + "@name": m.Name, + "@level": m.Level.String(), + "@time": m.Time, + } + + for i := 0; i < len(m.Fields); i = i + 2 { + vals[toString(m.Fields[i])] = m.Fields[i+1] + } + + err := json.NewEncoder(w).Encode(vals) if err != nil { panic(err) } |
