aboutsummaryrefslogtreecommitdiffstats
path: root/logger/loggers.go
diff options
context:
space:
mode:
Diffstat (limited to 'logger/loggers.go')
-rw-r--r--logger/loggers.go26
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)}
+}