code: func NewLoggerFromLoggingConfig(loggingConfig *logconfig.LoggingConfig) (*logging.Logger, error) {
  	if loggingConfig == nil {
  		return NewStdErrLogger()
  	} else {
  		outputLogger, errCh, err := loggerFromLoggingConfig(loggingConfig)
  		if err != nil {
  			return nil, err
  		}
  		logger := logging.NewLogger(outputLogger)
  		if !loggingConfig.Trace {
  			logger.Trace = log.NewNopLogger()
  		}
  		go func() {
  			err := <-errCh.Out()
  			if err != nil {
  				fmt.Printf("Logging error: %v", err)
  			}
  		}()
  		return logger, nil
  	}
  }
docs: // Lifecycle provides a canonical source for burrow loggers. Components should use the functions here
  // to set up their root logger and capture any other logging output.
  // Obtain a logger from a LoggingConfig