parent
47921a9eec
commit
c9feef66ab
@ -1,107 +1,119 @@ |
|||||||
package log |
package log |
||||||
|
|
||||||
import ( |
import ( |
||||||
"fmt" |
|
||||||
"io" |
|
||||||
"log" |
|
||||||
"os" |
"os" |
||||||
) |
|
||||||
|
|
||||||
type Level int |
|
||||||
|
|
||||||
const ( |
"github.com/gookit/color" |
||||||
LevelDebug Level = iota |
"github.com/gookit/slog" |
||||||
LevelWarn |
|
||||||
LevelError |
|
||||||
) |
) |
||||||
|
|
||||||
func (l Level) String() string { |
var std = &slog.SugaredLogger{} |
||||||
switch l { |
|
||||||
case LevelDebug: |
func Init(l string) { |
||||||
return "debug" |
if l == "debug" { |
||||||
case LevelError: |
std = newStdLogger(slog.DebugLevel) |
||||||
return "error" |
} else { |
||||||
|
std = newStdLogger(slog.ErrorLevel) |
||||||
} |
} |
||||||
return "" |
|
||||||
} |
} |
||||||
|
|
||||||
var ( |
const template = "[{{datetime}}] [{{level}}] [{{caller}}] {{message}} {{data}} {{extra}}\n" |
||||||
formatLogger *Logger |
|
||||||
levelMap = map[string]Level{ |
// NewStdLogger instance
|
||||||
"debug": LevelDebug, |
func newStdLogger(level slog.Level) *slog.SugaredLogger { |
||||||
"error": LevelError, |
return slog.NewSugaredLogger(os.Stdout, level).Configure(func(sl *slog.SugaredLogger) { |
||||||
} |
sl.SetName("stdLogger") |
||||||
) |
sl.ReportCaller = true |
||||||
|
sl.CallerSkip = 3 |
||||||
|
// auto enable console color
|
||||||
|
sl.Formatter.(*slog.TextFormatter).EnableColor = color.SupportColor() |
||||||
|
sl.Formatter.(*slog.TextFormatter).SetTemplate(template) |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
func InitLog(l string) { |
// Trace logs a message at level Trace
|
||||||
formatLogger = newLog(os.Stdout).setLevel(levelMap[l]).setFlags(log.Lshortfile) |
func Trace(args ...interface{}) { |
||||||
|
std.Log(slog.TraceLevel, args...) |
||||||
} |
} |
||||||
|
|
||||||
type Logger struct { |
// Tracef logs a message at level Trace
|
||||||
level Level |
func Tracef(format string, args ...interface{}) { |
||||||
l *log.Logger |
std.Logf(slog.TraceLevel, format, args...) |
||||||
} |
} |
||||||
|
|
||||||
func newLog(w io.Writer) *Logger { |
// Info logs a message at level Info
|
||||||
return &Logger{ |
func Info(args ...interface{}) { |
||||||
l: log.New(w, "", 0), |
std.Log(slog.InfoLevel, args...) |
||||||
} |
|
||||||
} |
} |
||||||
|
|
||||||
func (l *Logger) setFlags(flag int) *Logger { |
// Infof logs a message at level Info
|
||||||
l.l.SetFlags(flag) |
func Infof(format string, args ...interface{}) { |
||||||
return l |
std.Logf(slog.InfoLevel, format, args...) |
||||||
} |
} |
||||||
|
|
||||||
func (l *Logger) setLevel(level Level) *Logger { |
// Notice logs a message at level Notice
|
||||||
l.level = level |
func Notice(args ...interface{}) { |
||||||
return l |
std.Log(slog.NoticeLevel, args...) |
||||||
} |
} |
||||||
|
|
||||||
func (l *Logger) doLog(level Level, v ...interface{}) bool { |
// Noticef logs a message at level Notice
|
||||||
if level < l.level { |
func Noticef(format string, args ...interface{}) { |
||||||
return false |
std.Logf(slog.NoticeLevel, format, args...) |
||||||
} |
|
||||||
l.l.Output(3, level.String()+" "+fmt.Sprintln(v...)) |
|
||||||
return true |
|
||||||
} |
} |
||||||
|
|
||||||
func (l *Logger) doLogf(level Level, format string, v ...interface{}) bool { |
// Warn logs a message at level Warn
|
||||||
if level < l.level { |
func Warn(args ...interface{}) { |
||||||
return false |
std.Log(slog.WarnLevel, args...) |
||||||
|
} |
||||||
|
|
||||||
|
// Warnf logs a message at level Warn
|
||||||
|
func Warnf(format string, args ...interface{}) { |
||||||
|
std.Logf(slog.WarnLevel, format, args...) |
||||||
|
} |
||||||
|
|
||||||
|
// Error logs a message at level Error
|
||||||
|
func Error(args ...interface{}) { |
||||||
|
std.Log(slog.ErrorLevel, args...) |
||||||
|
} |
||||||
|
|
||||||
|
// ErrorT logs a error type at level Error
|
||||||
|
func ErrorT(err error) { |
||||||
|
if err != nil { |
||||||
|
std.Log(slog.ErrorLevel, err) |
||||||
} |
} |
||||||
l.l.Output(3, level.String()+" "+fmt.Sprintln(fmt.Sprintf(format, v...))) |
|
||||||
return true |
|
||||||
} |
} |
||||||
|
|
||||||
func Debug(v ...interface{}) { |
// Errorf logs a message at level Error
|
||||||
formatLogger.doLog(LevelDebug, v...) |
func Errorf(format string, args ...interface{}) { |
||||||
|
std.Logf(slog.ErrorLevel, format, args...) |
||||||
} |
} |
||||||
|
|
||||||
func Warn(v ...interface{}) { |
// Debug logs a message at level Debug
|
||||||
formatLogger.doLog(LevelWarn, v...) |
func Debug(args ...interface{}) { |
||||||
|
std.Log(slog.DebugLevel, args...) |
||||||
} |
} |
||||||
|
|
||||||
func Error(v ...interface{}) { |
// Debugf logs a message at level Debug
|
||||||
formatLogger.doLog(LevelError, v...) |
func Debugf(format string, args ...interface{}) { |
||||||
|
std.Logf(slog.DebugLevel, format, args...) |
||||||
} |
} |
||||||
|
|
||||||
func Errorf(format string, v ...interface{}) { |
// Fatal logs a message at level Fatal
|
||||||
formatLogger.doLogf(LevelError, format, v...) |
func Fatal(args ...interface{}) { |
||||||
|
std.Log(slog.FatalLevel, args...) |
||||||
} |
} |
||||||
|
|
||||||
func Warnf(format string, v ...interface{}) { |
// Fatalf logs a message at level Fatal
|
||||||
formatLogger.doLogf(LevelWarn, format, v...) |
func Fatalf(format string, args ...interface{}) { |
||||||
|
std.Logf(slog.FatalLevel, format, args...) |
||||||
} |
} |
||||||
|
|
||||||
func Debugf(format string, v ...interface{}) { |
// Panic logs a message at level Panic
|
||||||
formatLogger.doLogf(LevelDebug, format, v...) |
func Panic(args ...interface{}) { |
||||||
|
std.Log(slog.PanicLevel, args...) |
||||||
} |
} |
||||||
|
|
||||||
// NewSugaredLogger(os.Stdout, DebugLevel).Configure(func(sl *SugaredLogger) {
|
// Panicf logs a message at level Panic
|
||||||
// sl.SetName("stdLogger")
|
func Panicf(format string, args ...interface{}) { |
||||||
// sl.ReportCaller = true
|
std.Logf(slog.PanicLevel, format, args...) |
||||||
// // auto enable console color
|
} |
||||||
// sl.Formatter.(*TextFormatter).EnableColor = color.SupportColor()
|
|
||||||
// sl.Formatter.SetCallerSkip(1)
|
|
||||||
// })
|
|
||||||
|
Loading…
Reference in new issue