cml04-printer-robot/internal/logging/logging.go

53 lines
1.3 KiB
Go
Raw Normal View History

2024-08-19 02:23:44 +02:00
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,
}
}