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  }