github.com/profzone/eden-framework@v1.0.10/pkg/duration/duration.go (about) 1 package duration 2 3 import ( 4 "fmt" 5 "time" 6 7 "github.com/sirupsen/logrus" 8 ) 9 10 type Duration struct { 11 startTime time.Time 12 } 13 14 func (t *Duration) Reset() { 15 t.startTime = time.Now() 16 } 17 18 func (t *Duration) Get() string { 19 now := time.Now() 20 duration := now.Sub(t.startTime) 21 return fmt.Sprintf("%0.3f", float64(duration/time.Millisecond)) 22 } 23 24 func (t *Duration) GetAndReset() string { 25 defer t.Reset() 26 return t.Get() 27 } 28 29 func (t *Duration) ToLogger() *logrus.Entry { 30 return logrus.WithField("cost", t.Get()) 31 } 32 33 func NewDuration() *Duration { 34 return &Duration{ 35 startTime: time.Now(), 36 } 37 }