func WithLevelf(l Level, format string, v ...interface{}) {
	if l > level {
		return
	}
	Logf(format, v...)
}
WithLevelf logs with the level specified
package log
import (
	"fmt"
	stdlog "log"
	"os"
)
type Logger interface {
	Log(v ...interface{})
	Logf(format string, v ...interface{})
}
type Level int
const (
	LevelFatal Level = iota + 1
	LevelInfo
	LevelError
	LevelDebug
)
var (
	logger Logger = &defaultLogLogger{}
	level = LevelInfo
	prefix = "[Gev]"
)
type defaultLogLogger struct{}
func (t *defaultLogLogger) Log(v ...interface{}) {
	stdlog.Print(v...)
}
func (t *defaultLogLogger) Logf(format string, v ...interface{}) {
	stdlog.Printf(format, v...)
}
func init() {
	switch os.Getenv("GEV_LOG_LEVEL") {
	case "debug":
		level = LevelDebug
	case "info":
		level = LevelInfo
	case "error":
		level = LevelError
	case "fatal":
		level = LevelFatal
	}
}
func Log(v ...interface{}) {
	if len(prefix) > 0 {
		logger.Log(append([]interface{}{prefix, " "}, v...)...)
		return
	}
	logger.Log(v...)
}
func Logf(format string, v ...interface{}) {
	if len(prefix) > 0 {
		format = prefix + " " + format
	}
	logger.Logf(format, v...)
}
func WithLevel(l Level, v ...interface{}) {
	if l > level {
		return
	}
	Log(v...)
}