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

     1  package middleware
     2  
     3  import (
     4  	"context"
     5  	"gitee.com/woood2/luca/cmd/consumer/internal/subscriber"
     6  	"gitee.com/woood2/luca/internal/trace"
     7  	"github.com/Shopify/sarama"
     8  	"go.uber.org/zap"
     9  	"time"
    10  )
    11  
    12  func Logging(name string, logger *zap.Logger) subscriber.MsgMiddleware {
    13  	return func(next subscriber.MsgHandler) subscriber.MsgHandler {
    14  		return func(ctx context.Context, msg *sarama.ConsumerMessage, retry int)(commit bool)  {
    15  			defer func(begin time.Time){
    16  				logger.Info("Message claimed",
    17  					zap.String("name", name),
    18  					zap.String("traceID", trace.ID(ctx)),
    19  					zap.Int("retry", retry),
    20  					zap.Duration("cost", time.Since(begin)),
    21  					zap.Bool("commit", commit),
    22  					zap.String("msgValue", string(msg.Value)),
    23  					zap.Time("msgTime", msg.Timestamp),
    24  					zap.String("topic", msg.Topic),
    25  				)
    26  			}(time.Now())
    27  			return next(ctx, msg, retry)
    28  		}
    29  	}
    30  }