diff --git a/push/logging_service.go b/push/logging_service.go new file mode 100644 index 00000000..4efb7cc9 --- /dev/null +++ b/push/logging_service.go @@ -0,0 +1,34 @@ +package push + +import ( + "context" + "time" + + "github.com/go-kit/kit/log" +) + +type loggingMiddleware struct { + logger log.Logger + next Service +} + +func NewLoggingService(svc Service, logger log.Logger) loggingMiddleware { + return loggingMiddleware{ + next: svc, + logger: logger, + } +} + +func (mw loggingMiddleware) Push(ctx context.Context, udid string) (id string, err error) { + defer func(begin time.Time) { + _ = mw.logger.Log( + "method", "Push", + "udid", udid, + "err", err, + "took", time.Since(begin), + ) + }(time.Now()) + + id, err = mw.next.Push(ctx, udid) + return +} diff --git a/serve.go b/serve.go index 83db2f3d..754b66b7 100644 --- a/serve.go +++ b/serve.go @@ -142,7 +142,7 @@ func serve(args []string) error { sm.loadPushCerts() sm.setupSCEP(logger) sm.setupCheckinService() - sm.setupPushService() + sm.setupPushService(logger) sm.setupCommandService() sm.setupCommandQueue(logger) sm.setupDEPSync() @@ -483,7 +483,7 @@ type config struct { scepCACertPath string PushService *push.Service // bufford push - pushService *nanopush.Push + pushService nanopush.Service checkinService checkin.Service connectService connect.ConnectService enrollService enroll.Service @@ -628,7 +628,7 @@ func (c *config) setupConfigStore() { } -func (c *config) setupPushService() { +func (c *config) setupPushService(logger log.Logger) { if c.err != nil { return } @@ -654,11 +654,16 @@ after: c.err = err return } - c.pushService, err = nanopush.New(db, c.configDB, c.pubclient, opts...) + + service, err := nanopush.New(db, c.configDB, c.pubclient, opts...) if err != nil { - c.err = err + c.err = errors.Wrap(err, "starting micromdm push service") return } + c.pushService = nanopush.NewLoggingService( + service, + log.With(level.Info(logger), "component", "push"), + ) } func (c *config) setupEnrollmentService() {