| 134 | } |
| 135 | |
| 136 | func (e Entry) formatJSON(level, msg string) []byte { |
| 137 | data := make(Fields, len(e.Fields)+4) |
| 138 | |
| 139 | data[fieldKeyLevel] = level |
| 140 | data[fieldKeyMessage] = msg |
| 141 | data[fieldKeyTimestamp] = e.Timestamp |
| 142 | data[fieldKeyUnixTimestamp] = e.Timestamp.Unix() |
| 143 | |
| 144 | for k, v := range e.Fields { |
| 145 | switch v := v.(type) { |
| 146 | case error: |
| 147 | data[k] = v.Error() |
| 148 | default: |
| 149 | data[k] = v |
| 150 | } |
| 151 | } |
| 152 | |
| 153 | serialized, err := json.Marshal(data) |
| 154 | if err != nil { |
| 155 | fmt.Fprintf(os.Stderr, "formatting JSON: %v\n", err) |
| 156 | } |
| 157 | |
| 158 | return serialized |
| 159 | } |
| 160 | |
| 161 | func (e Entry) write(level, msg string) { |
| 162 | if !shouldLog(level) { |