Skip to content
Snippets Groups Projects
Forked from asapo / asapo
2125 commits behind the upstream repository.
logger.go 1.08 KiB
package logger

import (
	"errors"
	"strings"
)

type Level uint32

//log levels
const (
	InfoLevel = iota
	DebugLevel
	ErrorLevel
	WarnLevel
	FatalLevel
)

type Logger interface {
	Info(args ...interface{})
	Debug(args ...interface{})
	Fatal(args ...interface{})
	Warning(args ...interface{})
	Error(args ...interface{})
	SetLevel(level Level)
}

var my_logger Logger = &logRusLogger{}

func Info(args ...interface{}) {
	my_logger.Info(args...)
}

func Debug(args ...interface{}) {
	my_logger.Debug(args...)
}

func Warning(args ...interface{}) {
	my_logger.Warning(args...)
}

func Error(args ...interface{}) {
	my_logger.Error(args...)
}

func Fatal(args ...interface{}) {
	my_logger.Fatal(args...)
}

func SetLevel(level Level) {
	my_logger.SetLevel(level)
}

func LevelFromString(str string) (Level, error) {
	switch strings.ToLower(str) {
	case "debug":
		return DebugLevel, nil
	case "info":
		return InfoLevel, nil
	case "warning":
		return WarnLevel, nil
	case "error":
		return ErrorLevel, nil
	case "fatal", "none":
		return FatalLevel, nil
	}
	return FatalLevel, errors.New("wrong log level")

}