diff --git a/cmd/micromdm/serve.go b/cmd/micromdm/serve.go index 952342bf..7c93e2d9 100644 --- a/cmd/micromdm/serve.go +++ b/cmd/micromdm/serve.go @@ -171,9 +171,13 @@ func serve(args []string) error { stdlog.Fatal(sm.err) } - removeService, err := block.New(sm.removeDB) - if err != nil { - stdlog.Fatal(err) + var removeService block.Service + { + svc, err := block.New(sm.removeDB) + if err != nil { + stdlog.Fatal(err) + } + removeService = block.LoggingMiddleware(logger)(svc) } devDB, err := devicebuiltin.NewDB(sm.db, sm.pubclient) diff --git a/platform/remove/block_device.go b/platform/remove/block_device.go index a108f644..4b88bf00 100644 --- a/platform/remove/block_device.go +++ b/platform/remove/block_device.go @@ -4,6 +4,7 @@ import ( "context" "net/http" "net/url" + "time" "github.com/go-kit/kit/endpoint" "github.com/gorilla/mux" @@ -70,3 +71,17 @@ func (e Endpoints) BlockDevice(ctx context.Context, udid string) error { } return resp.(blockDeviceResponse).Err } + +func (mw logmw) BlockDevice(ctx context.Context, udid string) (err error) { + defer func(begin time.Time) { + _ = mw.logger.Log( + "method", "BlockDevice", + "udid", udid, + "err", err, + "took", time.Since(begin), + ) + }(time.Now()) + + err = mw.next.BlockDevice(ctx, udid) + return +} diff --git a/platform/remove/service.go b/platform/remove/service.go index 61802782..50207989 100644 --- a/platform/remove/service.go +++ b/platform/remove/service.go @@ -1,6 +1,10 @@ package remove -import "context" +import ( + "context" + + "github.com/go-kit/kit/log" +) type Service interface { BlockDevice(ctx context.Context, udid string) error @@ -20,3 +24,16 @@ type RemoveService struct { func New(store Store) (*RemoveService, error) { return &RemoveService{store: store}, nil } + +type Middleware func(next Service) Service + +func LoggingMiddleware(logger log.Logger) Middleware { + return func(next Service) Service { + return logmw{logger: logger, next: next} + } +} + +type logmw struct { + logger log.Logger + next Service +} diff --git a/platform/remove/unblock_device.go b/platform/remove/unblock_device.go index 78ce069e..7aae944b 100644 --- a/platform/remove/unblock_device.go +++ b/platform/remove/unblock_device.go @@ -5,6 +5,7 @@ import ( "errors" "net/http" "net/url" + "time" "github.com/go-kit/kit/endpoint" "github.com/gorilla/mux" @@ -68,3 +69,17 @@ func (e Endpoints) UnblockDevice(ctx context.Context, udid string) error { } return resp.(unblockDeviceResponse).Err } + +func (mw logmw) UnblockDevice(ctx context.Context, udid string) (err error) { + defer func(begin time.Time) { + _ = mw.logger.Log( + "method", "BlockDevice", + "udid", udid, + "err", err, + "took", time.Since(begin), + ) + }(time.Now()) + + err = mw.next.UnblockDevice(ctx, udid) + return +}