package main import ( "flag" "fmt" "os" "github.com/rs/zerolog/log" ) var ( flagLogJson *bool = flag.Bool( "jsonlogs", false, "If set, writes logging messages as json objects instead", ) flagConfigFile *string = flag.String( "config", "config.toml", "Location of the config file", ) flagLogLevel *string = flag.String( "loglevel", "Info", "Set the logging level. Options are: Trace, Debug, Info, Warning, Error, Fatal. Capitalisation doesn't matter. Defaults to Info", ) flagConfigOnly *bool = flag.Bool( "validate-config", false, "If set, the server will only validate the config (or write the default one) and then quit", ) ) 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() }