code: func (lc *LoggerConfig) NewLogger(c context.Context) logging.Logger {
  	lc.initOnce.Do(func() {
  		logger := lc.Logger
  		if logger == nil {
  			fmt := lc.Format
  			if fmt == "" {
  				fmt = PickStdFormat(lc.Out)
  			}
  			// Leveled formatted file backend.
  			backend := gol.AddModuleLevel(
  				gol.NewBackendFormatter(
  					gol.NewLogBackend(lc.Out, "", 0),
  					gol.MustStringFormatter(fmt)))
  			backend.SetLevel(gol.DEBUG, "")
  			logger = gol.MustGetLogger("")
  			logger.SetBackend(backend)
  		}
  		lc.w = &goLoggerWrapper{l: logger}
  	})
  	return &loggerImpl{lc.w, c}
  }
docs: // NewLogger returns new go-logging based logger bound to the given context.
  //
  // It will use logging level and fields specified in the context. Pass 'nil' as
  // a context to completely disable context-related checks. Note that default
  // context (e.g. context.Background()) is configured for Info logging level, not
  // Debug.
  //
  // lc.NewLogger is in fact logging.Factory and can be used in SetFactory.
  //
  // All loggers produced by LoggerConfig share single underlying go-logging
  // Logger instance.