diff --git a/cmd/osbuild-composer/config.go b/cmd/osbuild-composer/config.go index 30bfb21a0..d162cb9e3 100644 --- a/cmd/osbuild-composer/config.go +++ b/cmd/osbuild-composer/config.go @@ -10,10 +10,11 @@ import ( ) type ComposerConfigFile struct { - Koji KojiAPIConfig `toml:"koji"` - Worker WorkerAPIConfig `toml:"worker"` - WeldrAPI WeldrAPIConfig `toml:"weldr_api"` - LogLevel string `toml:"log_level"` + Koji KojiAPIConfig `toml:"koji"` + Worker WorkerAPIConfig `toml:"worker"` + WeldrAPI WeldrAPIConfig `toml:"weldr_api"` + LogLevel string `toml:"log_level"` + LogFormat string `toml:"log_format"` } type KojiAPIConfig struct { @@ -104,6 +105,8 @@ func GetDefaultConfig() *ComposerConfigFile { }, }, }, + LogLevel: "info", + LogFormat: "text", } } diff --git a/cmd/osbuild-composer/config_test.go b/cmd/osbuild-composer/config_test.go index 159707d83..935a083c3 100644 --- a/cmd/osbuild-composer/config_test.go +++ b/cmd/osbuild-composer/config_test.go @@ -59,6 +59,7 @@ func TestDefaultConfig(t *testing.T) { } require.Equal(t, expectedWeldrAPIConfig, defaultConfig.WeldrAPI) + require.Equal(t, "text", defaultConfig.LogFormat) } func TestConfig(t *testing.T) { diff --git a/cmd/osbuild-composer/main.go b/cmd/osbuild-composer/main.go index 53eb8b425..d54792525 100644 --- a/cmd/osbuild-composer/main.go +++ b/cmd/osbuild-composer/main.go @@ -42,6 +42,15 @@ func main() { logrus.Info("Failed to load loglevel from config:", err) } + switch config.LogFormat { + case "text": + logrus.SetFormatter(&logrus.TextFormatter{}) + case "json": + logrus.SetFormatter(&logrus.JSONFormatter{}) + default: + logrus.Infof("Failed to set logging format from config, '%s' is not a valid option", config.LogFormat) + } + logrus.Info("Loaded configuration:") err = DumpConfig(*config, logrus.StandardLogger().WriterLevel(logrus.InfoLevel)) if err != nil { diff --git a/docs/news/unreleased/log-options.md b/docs/news/unreleased/log-options.md new file mode 100644 index 000000000..d5db0b445 --- /dev/null +++ b/docs/news/unreleased/log-options.md @@ -0,0 +1,4 @@ +# Configurable logging + +* Logging is now configurable via the config file, `log_level` can be set to one of `trace`, `debug`, `info`, `warn`, `error` or `fatal`. +* JSON Logging is supported and configurable via the config file/env, `log_format` can be set to `text` or `json`.