Files
utodo/pkg/logger/default.go
2025-07-11 22:12:37 +08:00

98 lines
2.0 KiB
Go

package logger
import (
"fmt"
"os"
"strings"
"sync"
)
var (
pool = &sync.Pool{
New: func() any {
return &strings.Builder{}
},
}
nilLogger = func(prefix, timestamp, msg string, data ...any) {}
normalLogger = func(prefix, timestamp, msg string, data ...any) {
buf := pool.Get().(*strings.Builder)
buf.Reset()
buf.WriteString(prefix)
buf.WriteString(" | ")
buf.WriteString(timestamp)
buf.WriteString(" | ")
buf.WriteString(msg)
buf.WriteString("\n")
fmt.Printf(buf.String(), data...)
}
panicLogger = func(prefix, timestamp, msg string, data ...any) {
buf := pool.Get().(*strings.Builder)
buf.Reset()
buf.WriteString(prefix)
buf.WriteString(" | ")
buf.WriteString(timestamp)
buf.WriteString(" | ")
buf.WriteString(msg)
buf.WriteString("\n")
panic(buf.String())
}
fatalLogger = func(prefix, timestamp, msg string, data ...any) {
buf := pool.Get().(*strings.Builder)
buf.Reset()
buf.WriteString(prefix)
buf.WriteString(" | ")
buf.WriteString(timestamp)
buf.WriteString(" | ")
buf.WriteString(msg)
buf.WriteString("\n")
fmt.Printf(buf.String(), data...)
os.Exit(1)
}
DefaultLogger = &logger{
Mutex: sync.Mutex{},
timeFormat: "2006-01-02T15:04:05",
writer: os.Stdout,
level: LogLevelInfo,
debug: nilLogger,
info: normalLogger,
warn: normalLogger,
error: normalLogger,
panic: panicLogger,
fatal: fatalLogger,
}
)
func SetTimeFormat(format string) {
DefaultLogger.SetTimeFormat(format)
}
func SetLogLevel(level LogLevel) {
DefaultLogger.SetLogLevel(level)
}
func Debug(msg string, data ...any) {
DefaultLogger.Debug(msg, data...)
}
func Info(msg string, data ...any) {
DefaultLogger.Info(msg, data...)
}
func Warn(msg string, data ...any) {
DefaultLogger.Warn(msg, data...)
}
func Error(msg string, data ...any) {
DefaultLogger.Error(msg, data...)
}
func Panic(msg string, data ...any) {
DefaultLogger.Panic(msg, data...)
}
func Fatal(msg string, data ...any) {
DefaultLogger.Fatal(msg, data...)
}