53 lines
1.3 KiB
Go
53 lines
1.3 KiB
Go
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,
|
|
}
|
|
}
|