Skip to content

Commit

Permalink
add formatting options for the logger to cmdline parsing
Browse files Browse the repository at this point in the history
  • Loading branch information
Christoph Oelmüller committed Apr 23, 2018
1 parent a7521a7 commit f743745
Show file tree
Hide file tree
Showing 2 changed files with 59 additions and 6 deletions.
55 changes: 55 additions & 0 deletions logger.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
package main

import (
"os"

"github.com/go-kit/kit/log"
"github.com/go-kit/kit/log/level"
"io"
"strings"
)

func getLogger(loglevel, logoutput, logfmt string) log.Logger {
var out *os.File
switch strings.ToLower(logoutput) {
case "stderr":
out = os.Stderr
case "stdout":
out = os.Stdout
default:
out = os.Stdout
}
var logCreator func(io.Writer) log.Logger
switch strings.ToLower(logfmt) {
case "json":
logCreator = log.NewJSONLogger
case "logfmt":
logCreator = log.NewLogfmtLogger
default:
logCreator = log.NewLogfmtLogger
}

// create a logger
logger := logCreator(log.NewSyncWriter(out))

// set loglevel
var loglevelFilterOpt level.Option
switch strings.ToLower(loglevel) {
case "debug":
loglevelFilterOpt = level.AllowDebug()
case "info":
loglevelFilterOpt = level.AllowInfo()
case "warn":
loglevelFilterOpt = level.AllowWarn()
case "error":
loglevelFilterOpt = level.AllowError()
default:
loglevelFilterOpt = level.AllowInfo()
}
logger = level.NewFilter(logger, loglevelFilterOpt)
logger = log.With(logger,
"ts", log.DefaultTimestampUTC,
"caller", log.DefaultCaller,
)
return logger
}
10 changes: 4 additions & 6 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import (
"strings"
"time"

"github.com/go-kit/kit/log"
"github.com/go-kit/kit/log/level"
"github.com/justwatchcom/elasticsearch_exporter/collector"
"github.com/prometheus/client_golang/prometheus"
Expand All @@ -30,6 +29,9 @@ func main() {
esClientPrivateKey = flag.String("es.client-private-key", "", "Path to PEM file that conains the private key for client auth when connecting to Elasticsearch.")
esClientCert = flag.String("es.client-cert", "", "Path to PEM file that conains the corresponding cert for the private key to connect to Elasticsearch.")
esInsecureSkipVerify = flag.Bool("es.ssl-skip-verify", false, "Skip SSL verification when connecting to Elasticsearch.")
logLevel = flag.String("log.level", "info", "Sets the loglevel. Valid levels are debug, info, warn, error")
logFormat = flag.String("log.format", "logfmt", "Sets the log format. Valid formats are json and logfmt")
logOutput = flag.String("log.output", "stdout", "Sets the log output. Valid outputs are stdout and stderr")
showVersion = flag.Bool("version", false, "Show version and exit")
)
flag.Parse()
Expand All @@ -39,11 +41,7 @@ func main() {
os.Exit(0)
}

logger := log.NewLogfmtLogger(log.NewSyncWriter(os.Stdout))
logger = log.With(logger,
"ts", log.DefaultTimestampUTC,
"caller", log.DefaultCaller,
)
logger := getLogger(*logLevel, *logOutput, *logFormat)

esURL, err := url.Parse(*esURI)
if err != nil {
Expand Down

0 comments on commit f743745

Please sign in to comment.