diff options
Diffstat (limited to 'logger/loggers.go')
-rw-r--r-- | logger/loggers.go | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/logger/loggers.go b/logger/loggers.go index 77d111974..053f120be 100644 --- a/logger/loggers.go +++ b/logger/loggers.go @@ -13,8 +13,10 @@ logging of mutable state. package logger import ( + "encoding/json" "fmt" "os" + "time" ) type LogLevel uint32 @@ -112,3 +114,27 @@ func (logger *Logger) Fatalf(format string, v ...interface{}) { Flush() os.Exit(0) } + +type JsonLogger struct{} + +func NewJsonLogger() *JsonLogger { + return &JsonLogger{} +} + +func (logger *JsonLogger) Log(msgname string, dict map[string]interface{}) { + if _, ok := dict["ts"]; !ok { + dict["ts"] = time.Now().Local().Format(time.RFC3339Nano) + } + + // FIX + if _, ok := dict["level"]; !ok { + dict["level"] = "debug" + } + + obj := map[string]interface{}{ + msgname: dict, + } + + jsontxt, _ := json.Marshal(obj) + logMessageC <- message{JsonLevel, fmt.Sprintf("%s", jsontxt)} +} |