diff --git a/pkg/plugins/backendplugin/log_wrapper.go b/pkg/plugins/backendplugin/log_wrapper.go index 27ca7e49276..fa70e3f8c6b 100644 --- a/pkg/plugins/backendplugin/log_wrapper.go +++ b/pkg/plugins/backendplugin/log_wrapper.go @@ -13,20 +13,41 @@ type logWrapper struct { Logger glog.Logger } +func formatArgs(args ...interface{}) []interface{} { + if len(args) == 0 || len(args)%2 != 0 { + return args + } + + res := []interface{}{} + + for n := 0; n < len(args); n = n + 2 { + key := args[n] + + if stringKey, ok := key.(string); ok && stringKey == "timestamp" { + continue + } + + res = append(res, key) + res = append(res, args[n+1]) + } + + return res +} + func (lw logWrapper) Trace(msg string, args ...interface{}) { - lw.Logger.Debug(msg, args...) + lw.Logger.Debug(msg, formatArgs(args...)...) } func (lw logWrapper) Debug(msg string, args ...interface{}) { - lw.Logger.Debug(msg, args...) + lw.Logger.Debug(msg, formatArgs(args...)...) } func (lw logWrapper) Info(msg string, args ...interface{}) { - lw.Logger.Info(msg, args...) + lw.Logger.Info(msg, formatArgs(args...)...) } func (lw logWrapper) Warn(msg string, args ...interface{}) { - lw.Logger.Warn(msg, args...) + lw.Logger.Warn(msg, formatArgs(args...)...) } func (lw logWrapper) Error(msg string, args ...interface{}) { - lw.Logger.Error(msg, args...) + lw.Logger.Error(msg, formatArgs(args...)...) } func (lw logWrapper) IsTrace() bool { return true } diff --git a/pkg/plugins/backendplugin/log_wrapper_test.go b/pkg/plugins/backendplugin/log_wrapper_test.go new file mode 100644 index 00000000000..751da1d2e8a --- /dev/null +++ b/pkg/plugins/backendplugin/log_wrapper_test.go @@ -0,0 +1,29 @@ +package backendplugin + +import ( + "fmt" + "testing" + "time" + + "github.com/stretchr/testify/assert" +) + +func TestLogWrapper(t *testing.T) { + tcs := []struct { + args []interface{} + expectedResult []interface{} + }{ + {args: []interface{}{}, expectedResult: []interface{}{}}, + {args: []interface{}{"1", "2", "3"}, expectedResult: []interface{}{"1", "2", "3"}}, + {args: []interface{}{"1", "2"}, expectedResult: []interface{}{"1", "2"}}, + {args: []interface{}{"1", "2", "timestamp", time.Now()}, expectedResult: []interface{}{"1", "2"}}, + {args: []interface{}{"1", "2", "timestamp", time.Now(), "3", "4"}, expectedResult: []interface{}{"1", "2", "3", "4"}}, + } + + for i, tc := range tcs { + t.Run(fmt.Sprintf("formatArgs testcase %d", i), func(t *testing.T) { + res := formatArgs(tc.args...) + assert.Exactly(t, tc.expectedResult, res) + }) + } +} diff --git a/pkg/plugins/hclog-wrapper.go b/pkg/plugins/hclog-wrapper.go deleted file mode 100644 index 7bd031565c1..00000000000 --- a/pkg/plugins/hclog-wrapper.go +++ /dev/null @@ -1,58 +0,0 @@ -package plugins - -import ( - "io" - "io/ioutil" - "log" - - glog "github.com/grafana/grafana/pkg/infra/log" - hclog "github.com/hashicorp/go-hclog" -) - -type LogWrapper struct { - Logger glog.Logger -} - -func (lw LogWrapper) Trace(msg string, args ...interface{}) { - lw.Logger.Debug(msg, args...) -} -func (lw LogWrapper) Debug(msg string, args ...interface{}) { - lw.Logger.Debug(msg, args...) -} -func (lw LogWrapper) Info(msg string, args ...interface{}) { - lw.Logger.Info(msg, args...) -} -func (lw LogWrapper) Warn(msg string, args ...interface{}) { - lw.Logger.Warn(msg, args...) -} -func (lw LogWrapper) Error(msg string, args ...interface{}) { - lw.Logger.Error(msg, args...) -} - -func (lw LogWrapper) IsTrace() bool { return true } -func (lw LogWrapper) IsDebug() bool { return true } -func (lw LogWrapper) IsInfo() bool { return true } -func (lw LogWrapper) IsWarn() bool { return true } -func (lw LogWrapper) IsError() bool { return true } - -func (lw LogWrapper) With(args ...interface{}) hclog.Logger { - return LogWrapper{Logger: lw.Logger.New(args...)} -} -func (lw LogWrapper) Named(name string) hclog.Logger { - return LogWrapper{Logger: lw.Logger.New()} -} - -func (lw LogWrapper) ResetNamed(name string) hclog.Logger { - return LogWrapper{Logger: lw.Logger.New()} -} - -func (lw LogWrapper) StandardLogger(ops *hclog.StandardLoggerOptions) *log.Logger { - return nil -} - -func (lw LogWrapper) SetLevel(level hclog.Level) {} - -// Return a value that conforms to io.Writer, which can be passed into log.SetOutput() -func (lw LogWrapper) StandardWriter(opts *hclog.StandardLoggerOptions) io.Writer { - return ioutil.Discard -} diff --git a/scripts/go/go.mod b/scripts/go/go.mod index 332724133c5..97b77f1a341 100644 --- a/scripts/go/go.mod +++ b/scripts/go/go.mod @@ -10,5 +10,6 @@ require ( github.com/unknwon/com v1.0.1 // indirect github.com/unknwon/log v0.0.0-20150304194804-e617c87089d3 // indirect github.com/urfave/cli v1.20.0 // indirect + golang.org/x/tools v0.0.0-20191120001058-ad01d5993d97 // indirect gopkg.in/fsnotify/fsnotify.v1 v1.4.7 // indirect ) diff --git a/scripts/go/go.sum b/scripts/go/go.sum index b3ab76eabe8..7e569553417 100644 --- a/scripts/go/go.sum +++ b/scripts/go/go.sum @@ -364,6 +364,8 @@ golang.org/x/tools v0.0.0-20190912215617-3720d1ec3678/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20190930201159-7c411dea38b0/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191015150414-f936694f27bf h1:60bAcFbqQ3hW1i1JqrAcVJhY4qUUJhgBAimCcAKNvDE= golang.org/x/tools v0.0.0-20191015150414-f936694f27bf/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191120001058-ad01d5993d97 h1:u8hSFDulpuhoY0GHMbG6Rp23PzphtTnZrQX3dOvEae0= +golang.org/x/tools v0.0.0-20191120001058-ad01d5993d97/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=