File size: 1,324 Bytes
48d903a
553c00b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
package logger

import (
	"fmt"
	"os"
	"time"
)

type LogLevel int

const (
	DEBUG LogLevel = iota
	INFO
	WARN
	ERROR
)

var (
	currentLevel LogLevel = INFO
	levelNames            = map[LogLevel]string{
		DEBUG: "DEBUG",
		INFO:  "INFO",
		WARN:  "WARN",
		ERROR: "ERROR",
	}
	// ANSI 颜色
	levelColors = map[LogLevel]string{
		DEBUG: "\033[36m", // 青色
		INFO:  "\033[32m", // 绿色
		WARN:  "\033[33m", // 黄色
		ERROR: "\033[31m", // 红色
	}
	resetColor = "\033[0m"
)

func InitLogger() {
	level := os.Getenv("LOG_LEVEL")
	switch level {
	case "debug", "DEBUG":
		currentLevel = DEBUG
	case "warn", "WARN":
		currentLevel = WARN
	case "error", "ERROR":
		currentLevel = ERROR
	default:
		currentLevel = INFO
	}
}

func log(level LogLevel, format string, v ...interface{}) {
	if level < currentLevel {
		return
	}
	timestamp := time.Now().Format("2006/01/02 15:04:05")
	msg := fmt.Sprintf(format, v...)
	fmt.Printf("%s[%s]%s %s %s\n", levelColors[level], levelNames[level], resetColor, timestamp, msg)
}

func LogDebug(format string, v ...interface{}) {
	log(DEBUG, format, v...)
}

func LogInfo(format string, v ...interface{}) {
	log(INFO, format, v...)
}

func LogWarn(format string, v ...interface{}) {
	log(WARN, format, v...)
}

func LogError(format string, v ...interface{}) {
	log(ERROR, format, v...)
}