| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 | package mainimport (	"context"	"github.com/go-kit/kit/log"	"github.com/longjoy/micro-go-course/section35/zipkin-kit/string-service/service"	"time")// loggingMiddleware Make a new type// that contains Service interface and logger instancetype loggingMiddleware struct {	service.Service	logger log.Logger}// LoggingMiddleware make logging middlewarefunc LoggingMiddleware(logger log.Logger) service.ServiceMiddleware {	return func(next service.Service) service.Service {		return loggingMiddleware{next, logger}	}}func (mw loggingMiddleware) Concat(a, b string) (ret string, err error) {	defer func(begin time.Time) {		mw.logger.Log(			"function", "Concat",			"a", a,			"b", b,			"result", ret,			"took", time.Since(begin),		)	}(time.Now())	ret, err = mw.Service.Concat(a, b)	return ret, err}func (mw loggingMiddleware) Diff(ctx context.Context, a, b string) (ret string, err error) {	defer func(begin time.Time) {		mw.logger.Log(			"function", "Diff",			"a", a,			"b", b,			"result", ret,			"took", time.Since(begin),		)	}(time.Now())	ret, err = mw.Service.Diff(ctx, a, b)	return ret, err}func (mw loggingMiddleware) HealthCheck() (result bool) {	defer func(begin time.Time) {		mw.logger.Log(			"function", "HealthChcek",			"result", result,			"took", time.Since(begin),		)	}(time.Now())	result = mw.Service.HealthCheck()	return}
 |