diff --git a/internal/config/config.go b/internal/config/config.go index 91d404b82..ee436f478 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -70,6 +70,8 @@ func init() { pflag.Bool("log.config", true, "Log used configuration to log on startup") pflag.String("log.level", "info", "Log level, one of: debug, info, warning, error, fatal and panic") + pflag.String("log.format", "text", + "Log format, one of: text, json") pflag.StringSlice("receivers.keep", []string{}, "List of receivers to keep, all alerts with different receivers will be ignored") @@ -159,6 +161,7 @@ func (config *configSchema) Read() { config.Listen.Prefix = v.GetString("listen.prefix") config.Log.Config = v.GetBool("log.config") config.Log.Level = v.GetString("log.level") + config.Log.Format = v.GetString("log.format") config.Receivers.Keep = v.GetStringSlice("receivers.keep") config.Receivers.Strip = v.GetStringSlice("receivers.strip") config.Sentry.Private = v.GetString("sentry.private") diff --git a/internal/config/models.go b/internal/config/models.go index f7831f818..1d3abf0cd 100644 --- a/internal/config/models.go +++ b/internal/config/models.go @@ -82,6 +82,7 @@ type configSchema struct { Log struct { Config bool Level string + Format string } JIRA []jiraRule Receivers struct { diff --git a/main.go b/main.go index 7fab3239a..6a8b726cb 100644 --- a/main.go +++ b/main.go @@ -158,6 +158,15 @@ func setupLogger() { default: log.Fatalf("Unknown log level '%s'", config.Config.Log.Level) } + + switch config.Config.Log.Format { + case "text": + log.SetFormatter(&log.TextFormatter{}) + case "json": + log.SetFormatter(&log.JSONFormatter{}) + default: + log.Fatalf("Unknown log format '%s'", config.Config.Log.Format) + } } func main() {