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 }