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  }