mirror of
https://github.com/SleepingBag945/dddd.git
synced 2025-06-08 22:16:43 +00:00
36 lines
747 B
Go
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)
|
|
}
|