From 6e59af1662505a2cd6a1a87d92f09305c0939f20 Mon Sep 17 00:00:00 2001 From: Alexey Date: Sat, 2 Aug 2025 00:00:35 +0300 Subject: [PATCH] add json_format option for structure logging --- internal/engine/config/compositor.go | 1 + internal/engine/config/config.go | 1 + internal/engine/logs/logger.go | 9 ++++++++- 3 files changed, 10 insertions(+), 1 deletion(-) 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 }