package logging import ( "context" "time" "git.espin.casa/albert/cml04-printer-robot/internal/service" "git.espin.casa/albert/cml04-printer-robot/pkg/api" "git.espin.casa/albert/logger" ) type LoggingService struct { next service.IService log logger.LoggerAdapter } // RobotEventDataHandler implements service.IService. func (svc *LoggingService) RobotEventDataHandler(data []byte) (err error) { defer func(start time.Time) { fields := logger.LogFields{ "duration": time.Since(start).String(), } if err != nil { svc.log.Error("robot event handler data failed", err, fields) } else { svc.log.Trace("robot event handler data success", fields) } }(time.Now()) return svc.next.RobotEventDataHandler(data) } // PrintPackage implements service.IService. func (svc *LoggingService) PrintPackage(ctx context.Context, req *api.PrintPackageReq) (res *api.PrintPackageRes, err error) { defer func(start time.Time) { fields := logger.LogFields{ "duration": time.Since(start).String(), } if err != nil { svc.log.Error("print package failed", err, fields) } else { svc.log.Info("print package success", fields) } }(time.Now()) return svc.next.PrintPackage(ctx, req) } func NewLoggingService(next service.IService, log logger.LoggerAdapter) service.IService { return &LoggingService{ next: next, log: log, } }