func NewClient(owningServiceName string, logLevel string) LoggingClient {
	if !isValidLogLevel(logLevel) {
		logLevel = models.InfoLog
	}
	lc := edgeXLogger{
		owningServiceName: owningServiceName,
		logLevel:          &logLevel,
	}
	lc.rootLogger = log.NewLogfmtLogger(os.Stdout)
	lc.rootLogger = log.WithPrefix(
		lc.rootLogger,
		"ts",
		log.DefaultTimestampUTC,
		"app",
		owningServiceName,
		"source",
		log.Caller(5))
	lc.levelLoggers = map[string]log.Logger{}
	for _, logLevel := range logLevels() {
		lc.levelLoggers[logLevel] = log.WithPrefix(lc.rootLogger, "level", logLevel)
	}
	return lc
}
NewClient creates an instance of LoggingClient
package logger
import (
	"fmt"
	stdLog "log"
	"os"
	"github.com/edgexfoundry/go-mod-core-contracts/v2/errors"
	"github.com/edgexfoundry/go-mod-core-contracts/v2/models"
	"github.com/go-kit/kit/log"
)
type LoggingClient interface {
	SetLogLevel(logLevel string) errors.EdgeX
	LogLevel() string
	Debug(msg string, args ...interface{})
	Error(msg string, args ...interface{})
	Info(msg string, args ...interface{})
	Trace(msg string, args ...interface{})
	Warn(msg string, args ...interface{})
	Debugf(msg string, args ...interface{})
	Errorf(msg string, args ...interface{})
	Infof(msg string, args ...interface{})
	Tracef(msg string, args ...interface{})
	Warnf(msg string, args ...interface{})
}
type edgeXLogger struct {
	owningServiceName string
	logLevel          *string
	rootLogger        log.Logger
	levelLoggers      map[string]log.Logger
}