db logger

This commit is contained in:
2025-09-29 10:53:33 +03:00
parent c6b47d18f6
commit 3d1263b3e0
2 changed files with 41 additions and 8 deletions

View File

@@ -11,11 +11,14 @@ import (
"github.com/fatih/color"
)
type LoggerWriter func(level LogLevel, prefix, traceback string, message []any)
type Logger struct {
prefix string
level LogLevel
printTraceback bool
printTime bool
writers []LoggerWriter
f *os.File
}
@@ -26,6 +29,10 @@ type LogLevel struct {
c color.Attribute
}
func (l *LogLevel) GetName() string {
return l.t
}
type MethodTraceback struct {
Package string
Method string
@@ -36,11 +43,11 @@ type MethodTraceback struct {
}
var (
INFO LogLevel = LogLevel{n: 0, t: "info", c: color.FgWhite}
WARN LogLevel = LogLevel{n: 1, t: "warn", c: color.FgHiYellow}
ERROR LogLevel = LogLevel{n: 2, t: "error", c: color.FgHiRed}
FATAL LogLevel = LogLevel{n: 3, t: "fatal", c: color.FgRed}
DEBUG LogLevel = LogLevel{n: 4, t: "debug", c: color.FgGreen}
INFO = LogLevel{n: 0, t: "info", c: color.FgWhite}
WARN = LogLevel{n: 1, t: "warn", c: color.FgHiYellow}
ERROR = LogLevel{n: 2, t: "error", c: color.FgHiRed}
FATAL = LogLevel{n: 3, t: "fatal", c: color.FgRed}
DEBUG = LogLevel{n: 4, t: "debug", c: color.FgGreen}
)
func CreateLogger() *Logger {
@@ -76,6 +83,14 @@ func (l *Logger) PrintTraceback(b bool) *Logger {
l.printTraceback = b
return l
}
func (l *Logger) PrintTime(b bool) *Logger {
l.printTime = b
return l
}
func (l *Logger) AddWriters(writers []LoggerWriter) *Logger {
l.writers = append(l.writers, writers...)
return l
}
func (l *Logger) Info(m ...any) {
l.print(INFO, m)
@@ -152,7 +167,15 @@ func (l *Logger) print(level LogLevel, m []any) {
if l.level.n < level.n {
return
}
color.New(level.c).Println(l.buildString(level, m))
_, err := color.New(level.c).Println(l.buildString(level, m))
if err != nil {
l.Fatal(err)
return
}
for _, writer := range l.writers {
writer(level, l.prefix, l.formatTraceback(l.getTraceback()), m)
}
if l.f != nil {
if _, err := l.f.Write([]byte(l.buildString(level, m) + "\n")); err != nil {