diff --git a/config.yaml b/config.yaml index ca7a6ba..56deaf5 100644 --- a/config.yaml +++ b/config.yaml @@ -1,4 +1,5 @@ logLevel: debug +logFormat: json route: # Main route routes: diff --git a/main.go b/main.go index bc8d41d..71fa9a8 100644 --- a/main.go +++ b/main.go @@ -3,17 +3,16 @@ package main import ( "context" "flag" - "io/ioutil" - "os" - "os/signal" - "syscall" - "time" - "github.com/opsgenie/kubernetes-event-exporter/pkg/exporter" "github.com/opsgenie/kubernetes-event-exporter/pkg/kube" "github.com/rs/zerolog" "github.com/rs/zerolog/log" "gopkg.in/yaml.v2" + "io/ioutil" + "os" + "os/signal" + "syscall" + "time" ) var ( @@ -36,10 +35,7 @@ func main() { log.Fatal().Err(err).Msg("cannot parse config to YAML") } - log.Logger = log.With().Caller().Logger().Output(zerolog.ConsoleWriter{ - Out: os.Stdout, - TimeFormat: time.RFC3339, - }).Level(zerolog.DebugLevel) + log.Logger = log.With().Caller().Logger().Level(zerolog.DebugLevel) if cfg.LogLevel != "" { level, err := zerolog.ParseLevel(cfg.LogLevel) @@ -49,6 +45,18 @@ func main() { log.Logger = log.Logger.Level(level) } + if cfg.LogFormat == "json" { + // Defaults to JSON already nothing to do + } else if cfg.LogFormat == "" || cfg.LogFormat == "pretty" { + log.Logger = log.Logger.Output(zerolog.ConsoleWriter{ + Out: os.Stdout, + NoColor: false, + TimeFormat: time.RFC3339, + }) + } else { + log.Fatal().Str("log_format", cfg.LogFormat).Msg("Unknown log format") + } + kubeconfig, err := kube.GetKubernetesConfig() if err != nil { log.Fatal().Err(err).Msg("cannot get kubeconfig") diff --git a/pkg/exporter/config.go b/pkg/exporter/config.go index 34270b3..674909e 100644 --- a/pkg/exporter/config.go +++ b/pkg/exporter/config.go @@ -11,6 +11,7 @@ type Config struct { // TODO: There is currently a tight coupling with route and config, but not with receiver config and sink so // TODO: I am not sure what to do here. LogLevel string `yaml:"logLevel"` + LogFormat string `yaml:"logFormat"` LeaderElection kube.LeaderElectionConfig `yaml:"leaderElection"` Route Route `yaml:"route"` Receivers []sinks.ReceiverConfig `yaml:"receivers"`