blob: b57d893567eff384f68b5ced219788157e79da5d [file] [log] [blame]
package logger
import (
"fmt"
"runtime"
"github.com/merico-dev/lake/config"
"github.com/sirupsen/logrus"
)
var log *logrus.Logger
func init() {
log = logrus.New()
// log.SetFormatter(&logrus.JSONFormatter{})
// TODO: setting log level with config
log.SetLevel(logrus.DebugLevel)
}
var (
Black = Color("\033[30m%s\033[0m")
Red = Color("\033[31m%s\033[0m")
Green = Color("\033[32m%s\033[0m")
Yellow = Color("\033[33m%s\033[0m")
Purple = Color("\033[34m%s\033[0m")
Magenta = Color("\033[35m%s\033[0m")
Teal = Color("\033[36m%s\033[0m")
White = Color("\033[37m%s\033[0m")
)
func Color(colorString string) func(...interface{}) string {
if config.V.GetBool("NO_COLOR") {
return fmt.Sprint
}
sprint := func(args ...interface{}) string {
return fmt.Sprintf(colorString,
fmt.Sprint(args...))
}
return sprint
}
func Log(context string, data interface{}, color func(...interface{}) string, level string, logFunction func(args ...interface{})) {
_, file, line, ok := runtime.Caller(2)
if !ok {
file = "unknown"
}
logFunction(color("[", level, " >>> ", context, " - ", file, ":", line, " - "), data)
}
func Print(context string) {
Log(context, nil, Magenta, "DEBUG", log.Info)
}
func Debug(context string, data interface{}) {
Log(context, data, Green, "DEBUG", log.Debug)
}
func Info(context string, data interface{}) {
Log(context, data, Teal, "INFO", log.Info)
}
func Error(context string, data interface{}) {
Log(context, data, Red, "ERROR", log.Error)
}
func Warn(context string, data interface{}) {
Log(context, data, Yellow, "WARN", log.Warn)
}