From 31cf73e7782f16e98a7e67e50583238b2ea2c4b3 Mon Sep 17 00:00:00 2001 From: Lars Karlslund Date: Sun, 30 Oct 2022 18:23:48 +0100 Subject: [PATCH] Missing Go.mod things and also added zerotime log output (shows elapsed time from start rather than current time) --- go.mod | 2 ++ go.sum | 4 ++++ modules/cli/main.go | 3 +++ modules/ui/log.go | 22 ++++++++++++++++++---- 4 files changed, 27 insertions(+), 4 deletions(-) diff --git a/go.mod b/go.mod index dcd0ed1..f06deaa 100644 --- a/go.mod +++ b/go.mod @@ -116,6 +116,8 @@ require ( github.com/gravwell/buffer v0.0.0-20220728204757-23339f4bab66 // indirect github.com/gravwell/ipfix v1.4.5 // indirect github.com/h2non/filetype v1.1.3 // indirect + github.com/jfcg/sixb v1.3.5 // indirect + github.com/jfcg/sorty/v2 v2.0.8 // indirect github.com/k-sone/ipmigo v0.0.0-20190922011749-b22c7a70e949 // indirect github.com/miekg/dns v1.1.50 // indirect github.com/open-networks/go-msgraph v0.3.1 // indirect diff --git a/go.sum b/go.sum index 3e6ee1c..8b15d7f 100644 --- a/go.sum +++ b/go.sum @@ -308,6 +308,10 @@ github.com/inhies/go-bytesize v0.0.0-20220417184213-4913239db9cf h1:FtEj8sfIcaaB github.com/inhies/go-bytesize v0.0.0-20220417184213-4913239db9cf/go.mod h1:yrqSXGoD/4EKfF26AOGzscPOgTTJcyAwM2rpixWT+t4= github.com/jcmturner/gofork v0.0.0-20190328161633-dc7c13fece03/go.mod h1:MK8+TM0La+2rjBD4jE12Kj1pCCxK7d2LK/UM3ncEo0o= github.com/jcmturner/gofork v1.0.0/go.mod h1:MK8+TM0La+2rjBD4jE12Kj1pCCxK7d2LK/UM3ncEo0o= +github.com/jfcg/sixb v1.3.5 h1:K9b9cjTlPBH47+1xiyUftR2Edk7/qkoQv5m+MfJXbko= +github.com/jfcg/sixb v1.3.5/go.mod h1:UWrAr1q9s7pSPPqZNccmQM4N75p8GvuBYdFuq+09Qns= +github.com/jfcg/sorty/v2 v2.0.8 h1:x8vUzFP7KADIrEsGdrn3vHynpr72zmOVwUezoZnMG4w= +github.com/jfcg/sorty/v2 v2.0.8/go.mod h1:KIEfHyaX4UWOg0mTYJEtpfVaXssBgjH7UXcWcJeLcJ8= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/joeshaw/multierror v0.0.0-20140124173710-69b34d4ec901/go.mod h1:Z86h9688Y0wesXCyonoVr47MasHilkuLMqGhRZ4Hpak= github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= diff --git a/modules/cli/main.go b/modules/cli/main.go index 09951e3..3348128 100644 --- a/modules/cli/main.go +++ b/modules/cli/main.go @@ -28,6 +28,7 @@ var ( loglevel = Root.PersistentFlags().String("loglevel", "info", "Console log level") logfile = Root.PersistentFlags().String("logfile", "", "File to log to") logfilelevel = Root.PersistentFlags().String("logfilelevel", "info", "Log file log level") + logzerotime = Root.PersistentFlags().Bool("logzerotime", false, "Logged timestamps start from zero when program launches") embeddedprofiler = Root.PersistentFlags().Bool("embeddedprofiler", false, "Start embedded Go profiler on localhost:6060") cpuprofile = Root.PersistentFlags().Bool("cpuprofile", false, "Save CPU profile from start to end of processing in datapath") @@ -61,6 +62,8 @@ func Run() error { Root.SetArgs(args) Root.ParseFlags(args) + ui.Zerotime = *logzerotime + ll, err := ui.LogLevelString(*loglevel) if err != nil { ui.Error().Msgf("Invalid log level: %v - use one of: %v", *loglevel, ui.LogLevelStrings()) diff --git a/modules/ui/log.go b/modules/ui/log.go index 7dea0da..6b259ab 100644 --- a/modules/ui/log.go +++ b/modules/ui/log.go @@ -34,8 +34,13 @@ const ( LevelPanic ) -var defaultLogLevel = LevelInfo -var clearneeded bool +var ( + defaultLogLevel = LevelInfo + clearneeded bool + + Zerotime bool + starttime = time.Now() +) func SetDefaultLoglevel(i LogLevel) { defaultLogLevel = i @@ -65,8 +70,17 @@ type Logger struct { func (t Logger) Msgf(format string, args ...interface{}) Logger { outputMutex.Lock() + + var timetext string + if Zerotime { + elapsed := time.Since(starttime) + timetext = fmt.Sprintf("%02.0f:%02.0f:%02.0f.%03d", elapsed.Hours(), elapsed.Minutes(), elapsed.Seconds(), elapsed.Milliseconds()%1000) + } else { + timetext = time.Now().Format("15:04:05.000") + } + if logfile != nil && logfilelevel <= t.ll { - fmt.Fprintf(logfile, time.Now().Format("15:04:05.000")+" "+t.ll.String()+" "+format+"\n", args...) + fmt.Fprintf(logfile, timetext+" "+t.ll.String()+" "+format+"\n", args...) } if defaultLogLevel <= t.ll { if clearneeded { @@ -75,7 +89,7 @@ func (t Logger) Msgf(format string, args ...interface{}) Logger { clearneeded = false } - tprefix := pterm.DefaultBasicText.Sprint(time.Now().Format("15:04:05.000 ")) + tprefix := pterm.DefaultBasicText.Sprint(timetext + " ") pterm.Fprint(t.pterm.Writer, tprefix+t.pterm.Sprintfln(format, args...)) } if t.ll == LevelFatal {