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)}
 }