@@ -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"
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+ }
0 commit comments