db logger
This commit is contained in:
14
bot.go
14
bot.go
@@ -100,6 +100,7 @@ func NewBot(settings *BotSettings) *Bot {
|
||||
level = DEBUG
|
||||
}
|
||||
bot.logger = CreateLogger().Level(level).OpenFile(fmt.Sprintf("%s/main.log", strings.TrimRight(settings.LoggerBasePath, "/")))
|
||||
bot.logger = bot.logger.PrintTraceback(true)
|
||||
if settings.UseRequestLogger {
|
||||
bot.requestLogger = CreateLogger().Level(level).Prefix("REQUESTS").OpenFile(fmt.Sprintf("%s/requests.log", strings.TrimRight(settings.LoggerBasePath, "/")))
|
||||
}
|
||||
@@ -120,6 +121,14 @@ func (b *Bot) InitDatabaseContext(ctx *DatabaseContext) *Bot {
|
||||
b.dbContext = ctx
|
||||
return b
|
||||
}
|
||||
func (b *Bot) AddDatabaseLogger(writer func(db *DatabaseContext) LoggerWriter) *Bot {
|
||||
w := []LoggerWriter{writer(b.dbContext)}
|
||||
b.logger.AddWriters(w)
|
||||
if b.requestLogger != nil {
|
||||
b.requestLogger.AddWriters(w)
|
||||
}
|
||||
return b
|
||||
}
|
||||
|
||||
func (b *Bot) UpdateTypes(t ...string) *Bot {
|
||||
b.updateTypes = make([]string, 0)
|
||||
@@ -283,7 +292,8 @@ func (b *Bot) handleCallback(update *Update) {
|
||||
|
||||
for _, plugin := range b.plugins {
|
||||
if plugin.UpdateListener != nil {
|
||||
(*plugin.UpdateListener)(ctx, b.dbContext)
|
||||
lis := *plugin.UpdateListener
|
||||
lis(ctx, b.dbContext)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -310,7 +320,7 @@ func (ctx *MsgContext) Answer(text string) {
|
||||
_, err := ctx.Bot.SendMessage(&SendMessageP{
|
||||
ChatID: ctx.Msg.Chat.ID,
|
||||
Text: text,
|
||||
ParseMode: "markdown",
|
||||
ParseMode: ParseMD,
|
||||
})
|
||||
if err != nil {
|
||||
ctx.Bot.logger.Error(err)
|
||||
|
||||
35
logger.go
35
logger.go
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user