このページについて
タイトル通りです(2019-08)
いちいち Before のように書くのが面倒だったので簡単にしてみました
Before
func Do() {
s := time.Now()
//
// doAnyFunc()
//
e := time.Now()
log.Print(e.Sub(s))
}
After
msecでロギングしたい例
func Do() {
defer helper.MillSecTimeTrack(time.Now(), timeTrack())
//
// doAnyFunc()
//
}
func timeTrack() func(v float64) {
return func(v float64) {
log.Print(v)
}
}
func MillSecTimeTrack(start time.Time, loggingFunc func(e float64)) {
elapsed := time.Since(start).Seconds() * 1000
loggingFunc(elapsed)
}
関数でラップしているのは、経過時間以外にも情報を好きに残せるようにするためです
こんな感じ
func Do() {
query := "select * from qiita"
defer helper.MillSecTimeTrack(time.Now(), timeTrack(query))
//
// doAnyFunc()
//
}
func timeTrack(query string) func(v float64) {
return func(v float64) {
log.Print(query, v)
}
}
func MillSecTimeTrack(start time.Time, loggingFunc func(e float64)) {
elapsed := time.Since(start).Seconds() * 1000
loggingFunc(elapsed)
}