1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 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
}
|