SleepingBag945 01e7d0b159 dddd
2023-08-18 08:55:46 +02:00

36 lines
747 B
Go

package formatter
import (
"time"
jsoniter "github.com/json-iterator/go"
)
// JSON is a formatter for outputting json logs
type JSON struct{}
var _ Formatter = &JSON{}
var jsoniterCfg jsoniter.API
func init() {
jsoniterCfg = jsoniter.Config{SortMapKeys: true}.Froze()
}
// Format formats the log event data into bytes
func (j *JSON) Format(event *LogEvent) ([]byte, error) {
data := make(map[string]interface{})
if label, ok := event.Metadata["label"]; ok {
if label != "" {
data["level"] = label
delete(event.Metadata, "label")
}
}
for k, v := range event.Metadata {
data[k] = v
}
data["msg"] = event.Message
data["timestamp"] = time.Now().UTC().Format("2006-01-02T15:04:05-0700")
return jsoniterCfg.Marshal(data)
}