Add go-kit/log interface compatibility
diff --git a/log/log.go b/log/log.go
index 0a74a7f..5813ef2 100644
--- a/log/log.go
+++ b/log/log.go
@@ -14,6 +14,7 @@
package log
import (
+ "errors"
"flag"
"fmt"
"io"
@@ -149,6 +150,8 @@
Fatalln(...interface{})
Fatalf(string, ...interface{})
+ Log(keyvals ...interface{}) error
+
With(key string, value interface{}) Logger
}
@@ -156,6 +159,43 @@
entry *logrus.Entry
}
+func (l logger) Log(keyvals ...interface{}) (err error) {
+ if len(keyvals)%2 != 0 {
+ return errors.New("invalid arg count")
+ }
+ var lv string
+ var msg interface{}
+ fields := make(logrus.Fields, 5)
+
+ for i := 0; i < len(keyvals); i += 2 {
+ switch k := keyvals[i].(string); k {
+ case "level":
+ lv = fmt.Sprint(keyvals[i+1])
+ case "msg":
+ msg = fmt.Sprint(keyvals[i+1])
+ default:
+ fields[fmt.Sprint(keyvals[i])] = fmt.Sprint(keyvals[i+1])
+ }
+ }
+ ll := l.entry.WithFields(fields)
+
+ if msg == nil {
+ msg = ""
+ }
+ switch lv {
+ case "debug":
+ ll.Debug(msg)
+ case "warn":
+ ll.Warn(msg)
+ case "error":
+ ll.Error(msg)
+ default:
+ ll.Info(msg)
+ }
+
+ return nil
+}
+
func (l logger) With(key string, value interface{}) Logger {
return logger{l.entry.WithField(key, value)}
}