From ad28f03a951591c96854eef7bc18a36b0cebe582 Mon Sep 17 00:00:00 2001 From: Victor Vrantchan Date: Sat, 21 Oct 2017 17:38:18 -0400 Subject: [PATCH] add proper logging to connect service (#257) --- connect/connect.go | 3 +-- connect/logging.go | 38 ++++++++++++++++++++++++++++++++++++++ serve.go | 23 ++++++++++++++++------- 3 files changed, 55 insertions(+), 9 deletions(-) create mode 100644 connect/logging.go diff --git a/connect/connect.go b/connect/connect.go index da11c72e..ca93e286 100644 --- a/connect/connect.go +++ b/connect/connect.go @@ -2,7 +2,6 @@ package connect import ( "context" - "fmt" "github.com/micromdm/mdm" "github.com/pkg/errors" @@ -39,7 +38,6 @@ func New(queue Queue, pub pubsub.Publisher) (ConnectService, error) { } func (svc *connectSvc) Acknowledge(ctx context.Context, req mdm.Response) (payload []byte, err error) { - fmt.Printf("connected udid=%s type=%s, status=%s\n", req.UDID, req.RequestType, req.Status) event := NewEvent(req) msg, err := MarshalEvent(event) if err != nil { @@ -48,6 +46,7 @@ func (svc *connectSvc) Acknowledge(ctx context.Context, req mdm.Response) (paylo if err := svc.pub.Publish(context.TODO(), ConnectTopic, msg); err != nil { return nil, errors.Wrap(err, "publish connect Response on pubsub") } + cmd, err := svc.queue.Next(ctx, req) if err != nil { return nil, errors.Wrap(err, "calling Next with mdm response") diff --git a/connect/logging.go b/connect/logging.go new file mode 100644 index 00000000..4930e82f --- /dev/null +++ b/connect/logging.go @@ -0,0 +1,38 @@ +package connect + +import ( + "context" + "time" + + "github.com/go-kit/kit/log" + "github.com/micromdm/mdm" +) + +type loggingMiddleware struct { + logger log.Logger + next ConnectService +} + +func NewLoggingService(svc ConnectService, logger log.Logger) loggingMiddleware { + return loggingMiddleware{ + next: svc, + logger: logger, + } +} + +func (mw loggingMiddleware) Acknowledge(ctx context.Context, req mdm.Response) (payload []byte, err error) { + defer func(begin time.Time) { + _ = mw.logger.Log( + "method", "Acknowledge", + "udid", req.UDID, + "command_uuid", req.CommandUUID, + "status", req.Status, + "request_type", req.RequestType, + "err", err, + "took", time.Since(begin), + ) + }(time.Now()) + + payload, err = mw.next.Acknowledge(ctx, req) + return +} diff --git a/serve.go b/serve.go index 34d260e5..0e6bb2b1 100644 --- a/serve.go +++ b/serve.go @@ -27,6 +27,7 @@ import ( "github.com/boltdb/bolt" "github.com/go-kit/kit/endpoint" "github.com/go-kit/kit/log" + "github.com/go-kit/kit/log/level" httptransport "github.com/go-kit/kit/transport/http" "github.com/gorilla/mux" "github.com/pkg/errors" @@ -142,7 +143,7 @@ func serve(args []string) error { sm.setupCheckinService() sm.setupPushService() sm.setupCommandService() - sm.setupCommandQueue() + sm.setupCommandQueue(logger) sm.setupDEPSync() if sm.err != nil { stdlog.Fatal(sm.err) @@ -489,7 +490,7 @@ func (c *config) setupCommandService() { c.commandService, c.err = command.New(c.db, c.pubclient) } -func (c *config) setupCommandQueue() { +func (c *config) setupCommandQueue(logger log.Logger) { if c.err != nil { return } @@ -499,12 +500,20 @@ func (c *config) setupCommandQueue() { return } - connSvc, err := connect.New(q, c.pubclient) - if err != nil { - c.err = err - return + var connectService connect.ConnectService + { + svc, err := connect.New(q, c.pubclient) + if err != nil { + c.err = err + return + } + svc = connect.NewLoggingService( + svc, + log.With(level.Info(logger), "component", "connect"), + ) + connectService = svc } - c.connectService = connSvc + c.connectService = connectService } func (c *config) setupCheckinService() {