feat: Add full JSON output to JSON logger

This commit is contained in:
Felicitas Pojtinger
2021-12-28 22:36:44 +01:00
parent 40a5b9608f
commit 4fc7754505

View File

@@ -1,11 +1,32 @@
package logging package logging
import ( import (
"log" "encoding/json"
"fmt"
"os"
"time"
golog "github.com/fclairamb/go-log" golog "github.com/fclairamb/go-log"
) )
type logMessage struct {
Time int64 `json:"time"`
Level string `json:"level"`
Event string `json:"event"`
Data interface{} `json:"data"`
}
func printJSON(level string, event string, keyvals interface{}) {
line, _ := json.Marshal(&logMessage{
Time: time.Now().Unix(),
Level: level,
Event: event,
Data: keyvals,
}) // We are ignoring JSON marshalling erorrs
fmt.Fprintln(os.Stderr, string(line))
}
type JSONLogger struct{} type JSONLogger struct{}
func NewJSONLogger() *JSONLogger { func NewJSONLogger() *JSONLogger {
@@ -13,23 +34,23 @@ func NewJSONLogger() *JSONLogger {
} }
func (l JSONLogger) Trace(event string, keyvals ...interface{}) { func (l JSONLogger) Trace(event string, keyvals ...interface{}) {
log.Println("TRACE", event, keyvals) printJSON("TRACE", event, keyvals)
} }
func (l JSONLogger) Debug(event string, keyvals ...interface{}) { func (l JSONLogger) Debug(event string, keyvals ...interface{}) {
log.Println("DEBUG", event, keyvals) printJSON("DEBUG", event, keyvals)
} }
func (l JSONLogger) Info(event string, keyvals ...interface{}) { func (l JSONLogger) Info(event string, keyvals ...interface{}) {
log.Println("INFO", event, keyvals) printJSON("INFO", event, keyvals)
} }
func (l JSONLogger) Warn(event string, keyvals ...interface{}) { func (l JSONLogger) Warn(event string, keyvals ...interface{}) {
log.Println("WARN", event, keyvals) printJSON("WARN", event, keyvals)
} }
func (l JSONLogger) Error(event string, keyvals ...interface{}) { func (l JSONLogger) Error(event string, keyvals ...interface{}) {
log.Println("ERROR", event, keyvals) printJSON("ERROR", event, keyvals)
} }
func (l JSONLogger) With(keyvals ...interface{}) golog.Logger { func (l JSONLogger) With(keyvals ...interface{}) golog.Logger {