aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--eth/backend.go9
-rw-r--r--logger/loggers.go26
2 files changed, 35 insertions, 0 deletions
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)}
+}