diff --git a/internal/engine/config/compositor.go b/internal/engine/config/compositor.go index db0ca5b..c1454c0 100644 --- a/internal/engine/config/compositor.go +++ b/internal/engine/config/compositor.go @@ -58,6 +58,7 @@ func (c *Compositor) LoadConf(path string) error { v.SetDefault("updates.enabled", false) v.SetDefault("updates.check_interval", "2h") v.SetDefault("updates.wanted_version", "latest-stable") + v.SetDefault("log.json_format", "false") v.SetDefault("log.level", "info") v.SetDefault("log.output", "%stdout%") diff --git a/internal/engine/config/config.go b/internal/engine/config/config.go index e43fafe..7cc5afe 100644 --- a/internal/engine/config/config.go +++ b/internal/engine/config/config.go @@ -55,6 +55,7 @@ type Updates struct { } type Log struct { + JSON *bool `mapstructure:"json_format"` Level *string `mapstructure:"level"` OutPath any `mapstructure:"output"` } diff --git a/internal/engine/logs/logger.go b/internal/engine/logs/logger.go index a0b0a39..d268b50 100644 --- a/internal/engine/logs/logger.go +++ b/internal/engine/logs/logger.go @@ -90,6 +90,13 @@ func SetupLogger(o *config.Log) (*slog.Logger, error) { writer = logFile } - log := slog.New(slog.NewJSONHandler(writer, &handlerOpts)) + var handler slog.Handler + + if *o.JSON { + handler = slog.NewJSONHandler(writer, &handlerOpts) + } else { + handler = slog.NewTextHandler(writer, &handlerOpts) + } + log := slog.New(handler) return log, nil }