etheryo/backend/util/logger.go

59 lines
1.2 KiB
Go

package util
import (
"fmt"
"time"
)
type colorFormat string
type LogLevel int
const (
BLUE colorFormat = "\033[34m"
GREEN colorFormat = "\033[32m"
YELLOW colorFormat = "\033[33m"
RED colorFormat = "\033[31m"
LIGHT_RED colorFormat = "\033[91m"
WHITE colorFormat = "\033[97m"
RESET colorFormat = "\033[0m"
)
const (
NOLOG LogLevel = iota
INFO
CORRECT
WARNING
ERROR
)
var colorPrint = map[LogLevel]colorFormat{
NOLOG: "",
INFO: BLUE + "[INFO]" + RESET,
CORRECT: GREEN,
WARNING: YELLOW + "[WARN]",
ERROR: RED + "[ERR.]" + LIGHT_RED,
}
var minimumlog = NOLOG
func Logformat(level LogLevel, format string, args ...interface{}) {
if level < minimumlog {
return
}
header := colorPrint[level]
message := fmt.Sprintf(format, args...)
currentTime := time.Now()
time := fmt.Sprintf("[%02d/%02d/%d %02d:%02d:%02d]", currentTime.Day(), currentTime.Month(), currentTime.Year(), currentTime.Hour(), currentTime.Minute(), currentTime.Second())
if level == NOLOG {
fmt.Printf("%s\t\t%s", time, message)
} else if level != INFO {
fmt.Printf("%s%s\t%s%s", header, time, message, RESET)
} else {
fmt.Printf("%s%s\t%s", header, time, message)
}
}
func SetLevel(level LogLevel) {
minimumlog = level
}