44 lines
1.1 KiB
Go
44 lines
1.1 KiB
Go
package common
|
|
|
|
import (
|
|
"github.com/gookit/slog"
|
|
"github.com/gookit/slog/handler"
|
|
"github.com/gookit/slog/rotatefile"
|
|
"github.com/krau/SaveAny-Bot/config"
|
|
)
|
|
|
|
var Log *slog.Logger
|
|
|
|
func InitLogger() {
|
|
if Log != nil {
|
|
return
|
|
}
|
|
Log = slog.New()
|
|
logLevel := slog.LevelByName(config.Cfg.Log.Level)
|
|
logFilePath := config.Cfg.Log.File
|
|
logBackupNum := config.Cfg.Log.BackupCount
|
|
var logLevels []slog.Level
|
|
for _, level := range slog.AllLevels {
|
|
if level <= logLevel {
|
|
logLevels = append(logLevels, level)
|
|
}
|
|
}
|
|
tem := "[{{datetime}}] [{{level}}] [{{caller}}] {{message}} {{data}} {{extra}}\n"
|
|
consoleH := handler.NewConsoleHandler(logLevels)
|
|
consoleH.Formatter().(*slog.TextFormatter).SetTemplate(tem)
|
|
Log.AddHandler(consoleH)
|
|
if logFilePath != "" && logBackupNum > 0 {
|
|
fileH, err := handler.NewTimeRotateFile(
|
|
logFilePath,
|
|
rotatefile.EveryDay,
|
|
handler.WithLogLevels(slog.AllLevels),
|
|
handler.WithBackupNum(logBackupNum),
|
|
)
|
|
fileH.Formatter().(*slog.TextFormatter).SetTemplate(tem)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
Log.AddHandler(fileH)
|
|
}
|
|
}
|