etheryo/backend/util/logger.go

75 lines
1.8 KiB
Go

package util
import (
"fmt"
"time"
)
type colorFormat string
type LogLevel int
const (
BLUE colorFormat = "\033[34m"
GREEN colorFormat = "\033[32m"
LIGHT_GREEN colorFormat = "\033[92m"
YELLOW colorFormat = "\033[33m"
LIGHT_YELLOW colorFormat = "\033[93m"
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 + "[OK ]" + LIGHT_GREEN,
WARNING: YELLOW + "[WARN]" + LIGHT_YELLOW,
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 {
fmt.Printf("%s%s\t%s%s", header, time, message, RESET)
}
}
func Logformatrn(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("\r%s\t\t%s", time, message)
} else {
fmt.Printf("\r%s%s\t%s%s", header, time, message, RESET)
}
}
func SetLevel(level LogLevel) {
minimumlog = level
}