Updated cli flags

Better usage message
Flipped the -pretty flag to -jsonlogs. Is now pretty per default
This commit is contained in:
Melody Becker 2024-12-24 10:48:00 +01:00
parent 2b84d7eb2a
commit 1527c198e0
2 changed files with 36 additions and 7 deletions

View file

@ -1,17 +1,23 @@
package main package main
import "flag" import (
"flag"
"fmt"
"os"
"github.com/rs/zerolog/log"
)
var ( var (
flagPrettyPrint *bool = flag.Bool( flagLogJson *bool = flag.Bool(
"pretty", "jsonlogs",
false, 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( flagConfigFile *string = flag.String(
"config", "config",
"config.toml", "config.toml",
"Location of the config file. Defaults to \"config.toml\"", "Location of the config file",
) )
flagLogLevel *string = flag.String( flagLogLevel *string = flag.String(
"loglevel", "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() { func init() {
flag.Usage = flagUsage
flag.Parse() flag.Parse()
} }

View file

@ -96,7 +96,6 @@ func main() {
} }
func setLogLevel() { func setLogLevel() {
log.Info().Str("new-level", *flagLogLevel).Msg("Attempting to set log level")
switch strings.ToLower(*flagLogLevel) { switch strings.ToLower(*flagLogLevel) {
case "trace": case "trace":
zerolog.SetGlobalLevel(zerolog.TraceLevel) zerolog.SetGlobalLevel(zerolog.TraceLevel)
@ -113,10 +112,11 @@ func setLogLevel() {
default: default:
zerolog.SetGlobalLevel(zerolog.InfoLevel) zerolog.SetGlobalLevel(zerolog.InfoLevel)
} }
log.Info().Str("new-level", *flagLogLevel).Msg("New logging level set")
} }
func setLogger(extraLogWriters ...io.Writer) { func setLogger(extraLogWriters ...io.Writer) {
if *flagPrettyPrint { if !*flagLogJson {
console := zerolog.ConsoleWriter{Out: os.Stderr} console := zerolog.ConsoleWriter{Out: os.Stderr}
log.Logger = zerolog.New(zerolog.MultiLevelWriter(append([]io.Writer{console}, extraLogWriters...)...)). log.Logger = zerolog.New(zerolog.MultiLevelWriter(append([]io.Writer{console}, extraLogWriters...)...)).
With(). With().