feat: Add full JSON output to JSON logger
This commit is contained in:
@@ -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 {
|
||||||
|
|||||||
Reference in New Issue
Block a user