From 1527c198e023debd792f5b285cab60aa35ca7af6 Mon Sep 17 00:00:00 2001 From: mstar Date: Tue, 24 Dec 2024 10:48:00 +0100 Subject: [PATCH] Updated cli flags Better usage message Flipped the -pretty flag to -jsonlogs. Is now pretty per default --- flags.go | 39 ++++++++++++++++++++++++++++++++++----- main.go | 4 ++-- 2 files changed, 36 insertions(+), 7 deletions(-) diff --git a/flags.go b/flags.go index c8415b1..4b20c3a 100644 --- a/flags.go +++ b/flags.go @@ -1,17 +1,23 @@ package main -import "flag" +import ( + "flag" + "fmt" + "os" + + "github.com/rs/zerolog/log" +) var ( - flagPrettyPrint *bool = flag.Bool( - "pretty", + flagLogJson *bool = flag.Bool( + "jsonlogs", false, - "If set, pretty prints logging entries which would be json objects otherwise", + "If set, writes logging messages as json objects instead", ) flagConfigFile *string = flag.String( "config", "config.toml", - "Location of the config file. Defaults to \"config.toml\"", + "Location of the config file", ) flagLogLevel *string = flag.String( "loglevel", @@ -25,6 +31,29 @@ var ( ) ) +func flagUsage() { + executable, err := os.Executable() + if err != nil { + log.Fatal().Err(err).Msg("Failed to get own path") + } + fmt.Fprintf(os.Stderr, "Usage of %s:\n", executable) + fmt.Fprintln(os.Stderr, "\t-config string") + fmt.Fprintln(os.Stderr, "\t\tLocation of the config file (default: \"config.toml\")") + fmt.Fprintln(os.Stderr, "\t-loglevel string") + fmt.Fprintln( + os.Stderr, + "\t\tSet the logging level. Options are: Trace, Debug, Info, Warning, Error and Fatal. Case insensitive (default: \"Info\")", + ) + fmt.Fprintln(os.Stderr, "\t-validate-config") + fmt.Fprintln( + os.Stderr, + "\t\tIf set, the server will only validate the config (or write the default one) and then quit", + ) + fmt.Fprintln(os.Stderr, "\t-jsonlogs") + fmt.Fprintln(os.Stderr, "\t\tIf set, writes logging messages as json objects instead") +} + func init() { + flag.Usage = flagUsage flag.Parse() } diff --git a/main.go b/main.go index 1b1bea7..e3d4d23 100644 --- a/main.go +++ b/main.go @@ -96,7 +96,6 @@ func main() { } func setLogLevel() { - log.Info().Str("new-level", *flagLogLevel).Msg("Attempting to set log level") switch strings.ToLower(*flagLogLevel) { case "trace": zerolog.SetGlobalLevel(zerolog.TraceLevel) @@ -113,10 +112,11 @@ func setLogLevel() { default: zerolog.SetGlobalLevel(zerolog.InfoLevel) } + log.Info().Str("new-level", *flagLogLevel).Msg("New logging level set") } func setLogger(extraLogWriters ...io.Writer) { - if *flagPrettyPrint { + if !*flagLogJson { console := zerolog.ConsoleWriter{Out: os.Stderr} log.Logger = zerolog.New(zerolog.MultiLevelWriter(append([]io.Writer{console}, extraLogWriters...)...)). With().