package plog

import (
	"encoding/json"
	"fmt"

	"github.com/gobuffalo/logger"
	"github.com/sirupsen/logrus"
)

var Logger = logger.New(logger.ErrorLevel)

func Debug(t interface{}, m string, args ...interface{}) {
	if len(args)%2 == 1 {
		args = append(args, "")
	}
	f := logrus.Fields{}
	for i := 0; i < len(args); i += 2 {
		k := fmt.Sprint(args[i])
		v := args[i+1]
		if s, ok := v.(fmt.Stringer); ok {
			f[k] = s.String()
			continue
		}
		if s, ok := v.(string); ok {
			f[k] = s
			continue
		}
		if b, err := json.Marshal(v); err == nil {
			f[k] = string(b)
			continue
		}
		f[k] = v
	}
	e := Logger.WithFields(f)
	if s, ok := t.(string); ok {
		e.Debugf("%s#%s", s, m)
		return
	}
	e.Debugf("%T#%s", t, m)
}