72 lines
1.5 KiB
Go
72 lines
1.5 KiB
Go
package log
|
||
|
||
import (
|
||
"fmt"
|
||
"runtime"
|
||
"strconv"
|
||
"strings"
|
||
"time"
|
||
)
|
||
|
||
const (
|
||
colorReset = "\033[0m"
|
||
colorRed = "\033[31m"
|
||
colorGreen = "\033[32m"
|
||
colorYellow = "\033[33m"
|
||
colorBlue = "\033[34m"
|
||
)
|
||
|
||
func main() {
|
||
Debug("Debug message: %s", "connection established")
|
||
Info("System %s", "started successfully")
|
||
Warning("Disk space at %d%%", 85)
|
||
Error("Failed to %s", "load config")
|
||
}
|
||
|
||
func Debug(format string, args ...interface{}) {
|
||
log("DEBUG", colorBlue, format, args...)
|
||
}
|
||
|
||
func Info(format string, args ...interface{}) {
|
||
log("INFO", colorGreen, format, args...)
|
||
}
|
||
|
||
func Warning(format string, args ...interface{}) {
|
||
log("WARNING", colorYellow, format, args...)
|
||
}
|
||
|
||
func Error(format string, args ...interface{}) {
|
||
log("ERROR", colorRed, format, args...)
|
||
}
|
||
|
||
func log(level string, color string, format string, args ...interface{}) {
|
||
// 获取调用者信息(跳过2层调用栈)
|
||
_, file, line, _ := runtime.Caller(2)
|
||
|
||
s := strings.Split(file, "ProjectOctopus")[1]
|
||
callerInfo := strings.TrimLeft(s, "/") + " "
|
||
callerInfo += strconv.FormatInt(int64(line), 10)
|
||
|
||
timestamp := currentTimeString()
|
||
message := fmt.Sprintf(format, args...)
|
||
fmt.Printf("%s %s%-7s%s [%s] %s\n",
|
||
timestamp,
|
||
color,
|
||
level,
|
||
colorReset,
|
||
callerInfo,
|
||
message)
|
||
}
|
||
|
||
func currentTimeString() string {
|
||
|
||
// 加载东八区时区
|
||
loc, _ := time.LoadLocation("Asia/Shanghai")
|
||
|
||
// 获取当前时间并转换为东八区时间
|
||
now := time.Now().In(loc)
|
||
// 格式化为 "2006-01-02 15:04:05" 的布局
|
||
formattedTime := now.Format(time.DateTime)
|
||
return formattedTime
|
||
}
|