func (ar *AbstractRuntime) GetFunctionLogger() logger.Logger {
	return ar.FunctionLogger
}
GetFunctionLogger returns the function logger
package runtime
import (
	"fmt"
	"os"
	"github.com/nuclio/nuclio/pkg/common/status"
	"github.com/nuclio/nuclio/pkg/processor/databinding"
	"github.com/nuclio/errors"
	"github.com/nuclio/logger"
	"github.com/nuclio/nuclio-sdk-go"
)
type Runtime interface {
	ProcessEvent(event nuclio.Event, functionLogger logger.Logger) (interface{}, error)
	GetFunctionLogger() logger.Logger
	GetStatistics() *Statistics
	GetConfiguration() *Configuration
	SetStatus(newStatus status.Status)
	GetStatus() status.Status
	Start() error
	Stop() error
	Restart() error
	SupportsRestart() bool
}
type AbstractRuntime struct {
	Logger         logger.Logger
	FunctionLogger logger.Logger
	Context        *nuclio.Context
	Statistics     Statistics
	databindings   map[string]databinding.DataBinding
	configuration  *Configuration
	status         status.Status
}
func NewAbstractRuntime(logger logger.Logger, configuration *Configuration) (*AbstractRuntime, error) {
	var err error
	newAbstractRuntime := AbstractRuntime{
		Logger:         logger,
		FunctionLogger: configuration.FunctionLogger,
		configuration:  configuration,
	}
	if err = os.Setenv("NUCLIO_HANDLER", configuration.Spec.Handler); err != nil {
		return nil, errors.Wrap(err, "Failed to set handler env")
	}
	newAbstractRuntime.databindings, err = newAbstractRuntime.createAndStartDataBindings(logger, configuration)
	if err != nil {
		return nil, errors.Wrap(err, "Failed to create data bindings")
	}
	newAbstractRuntime.Context, err = newAbstractRuntime.createContext(newAbstractRuntime.FunctionLogger,
		configuration,
		newAbstractRuntime.databindings)
	if err != nil {
		return nil, errors.Wrap(err, "Failed to create context")
	}
	newAbstractRuntime.status = status.Initializing
	return &newAbstractRuntime, nil
}