gitee.com/woood2/luca@v1.0.4/cmd/cron/internal/middleware/logging.go (about)

     1  package middleware
     2  
     3  import (
     4  	"context"
     5  	"gitee.com/woood2/luca/cmd/cron/internal/job"
     6  	"gitee.com/woood2/luca/internal/trace"
     7  	"go.uber.org/zap"
     8  	"time"
     9  )
    10  
    11  func Logging(name string, logger *zap.Logger) job.Middleware {
    12  	return func(next job.HandlerFunc) job.HandlerFunc {
    13  		return func(ctx context.Context) {
    14  			traceID := trace.ID(ctx)
    15  			logger.Info("job start",
    16  				zap.String("name", name),
    17  				zap.String("traceID", traceID),
    18  			)
    19  			defer func(begin time.Time) {
    20  				logger.Info("job end",
    21  					zap.String("name", name),
    22  					zap.String("traceID", traceID),
    23  					zap.Duration("cost", time.Since(begin)),
    24  				)
    25  			}(time.Now())
    26  
    27  			next(ctx)
    28  		}
    29  	}
    30  }