@@ -0,0 +1,68 @@
|
||||
package utils
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"time"
|
||||
)
|
||||
|
||||
// ANSI 颜色代码
|
||||
const (
|
||||
ColorReset = "\033[0m"
|
||||
ColorBright = "\033[1m"
|
||||
ColorRed = "\033[31m"
|
||||
ColorGreen = "\033[32m"
|
||||
ColorYellow = "\033[33m"
|
||||
ColorBlue = "\033[34m"
|
||||
ColorCyan = "\033[36m"
|
||||
ColorGray = "\033[90m"
|
||||
)
|
||||
|
||||
// Logger 日志记录器
|
||||
type Logger struct{}
|
||||
|
||||
// NewLogger 创建新的日志记录器
|
||||
func NewLogger() *Logger {
|
||||
return &Logger{}
|
||||
}
|
||||
|
||||
// log 格式化日志条目
|
||||
func (l *Logger) log(level, color, message string) {
|
||||
timestamp := time.Now().Format(time.RFC3339)
|
||||
levelTag := fmt.Sprintf("%s%-7s%s", color, level, ColorReset)
|
||||
|
||||
// 格式化时间戳
|
||||
formattedTime := fmt.Sprintf("%s%s%s", ColorGray, timestamp, ColorReset)
|
||||
|
||||
// 根据级别选择输出方式
|
||||
if level == "ERROR" {
|
||||
fmt.Fprintf(os.Stderr, "%s [%s] %s\n", formattedTime, levelTag, message)
|
||||
} else {
|
||||
fmt.Printf("%s [%s] %s\n", formattedTime, levelTag, message)
|
||||
}
|
||||
}
|
||||
|
||||
// Info 绿色 "INFO" 级别日志
|
||||
func (l *Logger) Info(message string) {
|
||||
l.log("INFO", ColorGreen, message)
|
||||
}
|
||||
|
||||
// Warn 黄色 "WARN" 级别日志
|
||||
func (l *Logger) Warn(message string) {
|
||||
l.log("WARN", ColorYellow, message)
|
||||
}
|
||||
|
||||
// Error 红色 "ERROR" 级别日志
|
||||
func (l *Logger) Error(message string) {
|
||||
l.log("ERROR", ColorBright+ColorRed, message)
|
||||
}
|
||||
|
||||
// System 青色 "SYSTEM" 级别日志
|
||||
func (l *Logger) System(message string) {
|
||||
l.log("SYSTEM", ColorCyan, message)
|
||||
}
|
||||
|
||||
// HTTP 蓝色 "HTTP" 级别日志
|
||||
func (l *Logger) HTTP(message string) {
|
||||
l.log("HTTP", ColorBlue, message)
|
||||
}
|
||||
Reference in New Issue
Block a user