github.com/vseinstrumentiru/lego@v1.0.2/internal/lego/transport/event/metrics/handler.go (about) 1 package metrics 2 3 import ( 4 "time" 5 6 "github.com/ThreeDotsLabs/watermill/message" 7 "go.opencensus.io/stats" 8 "go.opencensus.io/tag" 9 ) 10 11 func Middleware(h message.HandlerFunc) message.HandlerFunc { 12 return func(msg *message.Message) (msgs []*message.Message, err error) { 13 now := time.Now() 14 ctx := msg.Context() 15 16 tags := []tag.Mutator{ 17 tag.Upsert(HandlerName, message.HandlerNameFromCtx(ctx)), 18 } 19 20 defer func() { 21 if err != nil { 22 tags = append(tags, tag.Upsert(Success, "false")) 23 } else { 24 tags = append(tags, tag.Upsert(Success, "true")) 25 } 26 27 _ = stats.RecordWithTags(ctx, tags, HandlerExecutionTime.M(time.Since(now).Seconds())) 28 }() 29 30 return h(msg) 31 } 32 }