diff --git a/cmd/config.go b/cmd/config.go index 0bd3a47..43cdd4e 100644 --- a/cmd/config.go +++ b/cmd/config.go @@ -23,6 +23,7 @@ Options: -s --sleeptime Time to sleep between checks (default: 5s) -l --label Add label to exported metric -i --internals Also add labels about resource usage +-d --debug Enable debug log level -h --help Show help -v --version Show program version` ) @@ -32,10 +33,11 @@ type Config struct { Showversion bool `koanf:"version"` // -v Showhelp bool `koanf:"help"` // -h Internals bool `koanf:"internals"` // -i + Debug bool `koanf:"debug"` // -d Label []string `koanf:"label"` // -v Timeout int `koanf:"timeout"` // -t Port int `koanf:"port"` // -p - Sleeptime int `koanf:"sleep"` // -s + Sleeptime int `koanf:"sleeptime"` // -s File string Labels []Label @@ -56,6 +58,7 @@ func InitConfig(output io.Writer) (*Config, error) { // parse commandline flags flagset.BoolP("version", "v", false, "show program version") flagset.BoolP("help", "h", false, "show help") + flagset.BoolP("debug", "d", false, "enable debug logs") flagset.BoolP("internals", "i", false, "add internal metrics") flagset.StringArrayP("label", "l", nil, "additional labels") flagset.IntP("timeout", "t", 1, "timeout for file operation in seconds") diff --git a/cmd/log.go b/cmd/log.go index fbe3f97..177f974 100644 --- a/cmd/log.go +++ b/cmd/log.go @@ -7,14 +7,18 @@ import ( "github.com/lmittmann/tint" ) -func setLogger(output io.Writer) { +func setLogger(output io.Writer, debug bool) { logLevel := &slog.LevelVar{} opts := &tint.Options{ Level: logLevel, AddSource: false, } - logLevel.Set(slog.LevelDebug) + if debug { + logLevel.Set(slog.LevelDebug) + } else { + logLevel.Set(slog.LevelInfo) + } handler := tint.NewHandler(output, opts) logger := slog.New(handler) diff --git a/cmd/root.go b/cmd/root.go index e741b1e..17a05e3 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -21,7 +21,7 @@ func Run() { metrics := NewMetrics(conf) alloc := NewAlloc() - setLogger(os.Stdout) + setLogger(os.Stdout, conf.Debug) go func() { for { @@ -32,6 +32,7 @@ func Run() { // ns => s now := time.Now() elapsed := float64(now.Sub(start).Nanoseconds()) / 10000000000 + slog.Debug("elapsed time", "elapsed", elapsed, "result", result) metrics.Set(result, elapsed)