diff --git a/log/default.go b/log/default.go index 3045e17..6ab24ee 100644 --- a/log/default.go +++ b/log/default.go @@ -12,6 +12,15 @@ var ( fmt.Printf(prefix+"| "+timestamp+" | "+msg+"\n", data...) } + panicLogger = func(prefix, timestamp, msg string, data ...any) { + panic(fmt.Sprintf(prefix+"| "+timestamp+" | "+msg+"\n", data...)) + } + + fatalLogger = func(prefix, timestamp, msg string, data ...any) { + fmt.Printf(prefix+"| "+timestamp+" | "+msg+"\n", data...) + os.Exit(1) + } + defaultLogger = &logger{ Mutex: sync.Mutex{}, timeFormat: "2006-01-02T15:04:05", @@ -21,6 +30,8 @@ var ( info: normalLogger, warn: normalLogger, error: normalLogger, + panic: panicLogger, + fatal: fatalLogger, } ) @@ -46,3 +57,11 @@ func Warn(msg string, data ...any) { 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...) +} diff --git a/log/log.go b/log/log.go index 11bae63..9e55695 100644 --- a/log/log.go +++ b/log/log.go @@ -14,6 +14,8 @@ const ( LogLevelInfo LogLevelWarn LogLevelError + LogLevelPanic + LogLevelFatal ) type logger struct { @@ -25,10 +27,13 @@ type logger struct { info func(prefix, timestamp, msg string, data ...any) warn func(prefix, timestamp, msg string, data ...any) error func(prefix, timestamp, msg string, data ...any) + panic func(prefix, timestamp, msg string, data ...any) + fatal func(prefix, timestamp, msg string, data ...any) } var ( red = color.New(color.FgRed) + hired = color.New(color.FgHiRed) green = color.New(color.FgGreen) yellow = color.New(color.FgYellow) white = color.New(color.FgWhite) @@ -67,6 +72,18 @@ func (l *logger) SetLogLevel(level LogLevel) { } else { l.error = normalLogger } + + if level > LogLevelPanic { + l.panic = nilLogger + } else { + l.panic = panicLogger + } + + if level > LogLevelFatal { + l.fatal = nilLogger + } else { + l.fatal = fatalLogger + } } func (l *logger) Debug(msg string, data ...any) { @@ -85,6 +102,14 @@ func (l *logger) Error(msg string, data ...any) { l.error(red.Sprint("Error "), time.Now().Format(l.timeFormat), msg, data...) } +func (l *logger) Panic(msg string, data ...any) { + l.panic(hired.Sprint("Panic "), time.Now().Format(l.timeFormat), msg, data...) +} + +func (l *logger) Fatal(msg string, data ...any) { + l.fatal(hired.Sprint("Fatal "), time.Now().Format(l.timeFormat), msg, data...) +} + type WroteLogger interface { Info(msg string, data ...any) } diff --git a/log/new.go b/log/new.go new file mode 100644 index 0000000..204fac1 --- /dev/null +++ b/log/new.go @@ -0,0 +1,21 @@ +package log + +import ( + "os" + "sync" +) + +func New() *logger { + return &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, + } +}