Skip to content

Commit 784e7d2

Browse files
refactor: add log.format param, deprecate log.json flag (burningalchemist#561)
1 parent e954af5 commit 784e7d2

File tree

2 files changed

+33
-15
lines changed

2 files changed

+33
-15
lines changed

cmd/sql_exporter/main.go

Lines changed: 32 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212

1313
"github.com/burningalchemist/sql_exporter"
1414
cfg "github.com/burningalchemist/sql_exporter/config"
15+
"github.com/go-kit/log"
1516
_ "github.com/kardianos/minwinsvc"
1617
"github.com/prometheus/client_golang/prometheus"
1718
info "github.com/prometheus/client_golang/prometheus/collectors/version"
@@ -37,7 +38,8 @@ var (
3738
enableReload = flag.Bool("web.enable-reload", false, "Enable reload collector data handler")
3839
webConfigFile = flag.String("web.config.file", "", "[EXPERIMENTAL] TLS/BasicAuth configuration file path")
3940
configFile = flag.String("config.file", "sql_exporter.yml", "SQL Exporter configuration file path")
40-
logFormatJSON = flag.Bool("log.json", false, "Set log output format to JSON")
41+
logFormatJSON = flag.Bool("log.json", false, "[DEPRECATED] Set log output format to JSON")
42+
logFormat = flag.String("log.format", "logfmt", "Set log output format")
4143
logLevel = flag.String("log.level", "info", "Set log level")
4244
)
4345

@@ -64,23 +66,11 @@ func main() {
6466
}
6567

6668
// Setup logging.
67-
promlogConfig := &promlog.Config{}
68-
promlogConfig.Level = &promlog.AllowedLevel{}
69-
err := promlogConfig.Level.Set(*logLevel)
69+
logger, err := setupLogging(*logLevel, *logFormat, *logFormatJSON)
7070
if err != nil {
7171
fmt.Printf("Error initializing exporter: %s\n", err)
7272
os.Exit(1)
7373
}
74-
if *logFormatJSON {
75-
promlogConfig.Format = &promlog.AllowedFormat{}
76-
_ = promlogConfig.Format.Set("json")
77-
}
78-
79-
// Overriding the default klog with our go-kit klog implementation.
80-
// Thus we need to pass it our go-kit logger object.
81-
logger := promlog.New(promlogConfig)
82-
klog.SetLogger(logger)
83-
klog.ClampLevel(debugMaxLevel)
8474

8575
// Override the config.file default with the SQLEXPORTER_CONFIG environment variable if set.
8676
if val, ok := os.LookupEnv(cfg.EnvConfigFile); ok {
@@ -160,3 +150,31 @@ func startScrapeErrorsDropTicker(exporter sql_exporter.Exporter, interval model.
160150
}
161151
}()
162152
}
153+
154+
// setupLogging configures and initializes the logging system.
155+
func setupLogging(logLevel, logFormat string, logFormatJSON bool) (log.Logger, error) {
156+
promlogConfig := &promlog.Config{
157+
Level: &promlog.AllowedLevel{},
158+
Format: &promlog.AllowedFormat{},
159+
}
160+
161+
if err := promlogConfig.Level.Set(logLevel); err != nil {
162+
return nil, err
163+
}
164+
165+
// Override log format if JSON is specified.
166+
finalLogFormat := logFormat
167+
if logFormatJSON {
168+
fmt.Print("Warning: The flag --log.json is deprecated and will be removed in a future release. Please use --log.format=json instead\n")
169+
finalLogFormat = "json"
170+
}
171+
if err := promlogConfig.Format.Set(finalLogFormat); err != nil {
172+
return nil, err
173+
}
174+
// Overriding the default klog with our go-kit klog implementation.
175+
logger := promlog.New(promlogConfig)
176+
klog.SetLogger(logger)
177+
klog.ClampLevel(debugMaxLevel)
178+
179+
return logger, nil
180+
}

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ require (
99
github.com/aws/aws-sdk-go-v2 v1.30.1
1010
github.com/aws/aws-sdk-go-v2/config v1.27.23
1111
github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.32.1
12+
github.com/go-kit/log v0.2.1
1213
github.com/go-sql-driver/mysql v1.8.1
1314
github.com/jackc/pgx/v5 v5.6.0
1415
github.com/kardianos/minwinsvc v1.0.2
@@ -68,7 +69,6 @@ require (
6869
github.com/gabriel-vasile/mimetype v1.4.2 // indirect
6970
github.com/go-faster/city v1.0.1 // indirect
7071
github.com/go-faster/errors v0.7.1 // indirect
71-
github.com/go-kit/log v0.2.1 // indirect
7272
github.com/go-logfmt/logfmt v0.5.1 // indirect
7373
github.com/go-logr/logr v1.4.1 // indirect
7474
github.com/goccy/go-json v0.10.2 // indirect

0 commit comments

Comments
 (0)