github.com/Schaudge/grailbase@v0.0.0-20240223061707-44c758a471c0/file/s3file/internal/autolog/autolog.go (about)

     1  package autolog
     2  
     3  import (
     4  	"flag"
     5  	"time"
     6  )
     7  
     8  var autologPeriod = flag.Duration("s3file.autolog_period", 0,
     9  	"Interval for logging s3transport metrics. Zero disables logging.")
    10  
    11  // Register configures an internal ticker to periodically call logFn.
    12  func Register(logFn func()) {
    13  	if *autologPeriod == 0 {
    14  		return
    15  	}
    16  	go func() {
    17  		ticker := time.NewTicker(*autologPeriod)
    18  		defer ticker.Stop()
    19  		for {
    20  			select {
    21  			case _ = <-ticker.C:
    22  				logFn()
    23  			}
    24  		}
    25  	}()
    26  }