github.com/yankunsam/loki/v2@v2.6.3-0.20220817130409-389df5235c27/clients/cmd/docker-driver/main.go (about) 1 package main 2 3 import ( 4 "fmt" 5 "net/http" 6 _ "net/http/pprof" 7 "os" 8 9 "github.com/docker/go-plugins-helpers/sdk" 10 "github.com/go-kit/log" 11 "github.com/go-kit/log/level" 12 "github.com/prometheus/common/version" 13 "github.com/weaveworks/common/logging" 14 15 "github.com/grafana/loki/pkg/util" 16 _ "github.com/grafana/loki/pkg/util/build" 17 util_log "github.com/grafana/loki/pkg/util/log" 18 ) 19 20 const socketAddress = "/run/docker/plugins/loki.sock" 21 22 var logLevel logging.Level 23 24 func main() { 25 levelVal := os.Getenv("LOG_LEVEL") 26 if levelVal == "" { 27 levelVal = "info" 28 } 29 30 if err := logLevel.Set(levelVal); err != nil { 31 fmt.Fprintln(os.Stdout, "invalid log level: ", levelVal) 32 os.Exit(1) 33 } 34 logger := newLogger(logLevel) 35 level.Info(util_log.Logger).Log("msg", "Starting docker-plugin", "version", version.Info()) 36 37 h := sdk.NewHandler(`{"Implements": ["LoggingDriver"]}`) 38 39 handlers(&h, newDriver(logger)) 40 41 pprofPort := os.Getenv("PPROF_PORT") 42 if pprofPort != "" { 43 go func() { 44 err := http.ListenAndServe(fmt.Sprintf(":%s", pprofPort), nil) 45 logger.Log("msg", "http server stopped", "err", err) 46 }() 47 } 48 49 if err := h.ServeUnix(socketAddress, 0); err != nil { 50 panic(err) 51 } 52 } 53 54 func newLogger(lvl logging.Level) log.Logger { 55 // plugin logs must be stdout to appear. 56 logger := log.NewLogfmtLogger(log.NewSyncWriter(os.Stdout)) 57 logger = level.NewFilter(logger, util.LogFilter(lvl.String())) 58 logger = log.With(logger, "ts", log.DefaultTimestampUTC) 59 logger = log.With(logger, "caller", log.Caller(3)) 60 return logger 61 }