From 1077109e1153cc4fb4eece59dd48cd9f640d0e0b Mon Sep 17 00:00:00 2001 From: Taylor Gerring Date: Wed, 21 Jan 2015 10:57:29 -0600 Subject: [PATCH] Add JsonLogger type --- eth/backend.go | 9 +++++++++ logger/loggers.go | 26 ++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/eth/backend.go b/eth/backend.go index da75da051..c16727e1c 100644 --- a/eth/backend.go +++ b/eth/backend.go @@ -44,6 +44,7 @@ type Config struct { } var logger = ethlogger.NewLogger("SERV") +var jsonlogger = ethlogger.NewJsonLogger() type Ethereum struct { // Channel for shutting down the ethereum @@ -221,6 +222,14 @@ func (s *Ethereum) MaxPeers() int { // Start the ethereum func (s *Ethereum) Start(seed bool) error { + evd := map[string]interface{}{ + "version_string": s.ClientIdentity().String(), + "guid": ethutil.Bytes2Hex(s.ClientIdentity().Pubkey()), + "level": "debug", + "coinbase": ethutil.Bytes2Hex(s.KeyManager().Address()), + "eth_version": ProtocolVersion, + } + jsonlogger.Log("starting", evd) err := s.net.Start() if err != nil { return err 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)} +}