db logger
This commit is contained in:
14
bot.go
14
bot.go
@@ -100,6 +100,7 @@ func NewBot(settings *BotSettings) *Bot {
|
|||||||
level = DEBUG
|
level = DEBUG
|
||||||
}
|
}
|
||||||
bot.logger = CreateLogger().Level(level).OpenFile(fmt.Sprintf("%s/main.log", strings.TrimRight(settings.LoggerBasePath, "/")))
|
bot.logger = CreateLogger().Level(level).OpenFile(fmt.Sprintf("%s/main.log", strings.TrimRight(settings.LoggerBasePath, "/")))
|
||||||
|
bot.logger = bot.logger.PrintTraceback(true)
|
||||||
if settings.UseRequestLogger {
|
if settings.UseRequestLogger {
|
||||||
bot.requestLogger = CreateLogger().Level(level).Prefix("REQUESTS").OpenFile(fmt.Sprintf("%s/requests.log", strings.TrimRight(settings.LoggerBasePath, "/")))
|
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
|
b.dbContext = ctx
|
||||||
return b
|
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 {
|
func (b *Bot) UpdateTypes(t ...string) *Bot {
|
||||||
b.updateTypes = make([]string, 0)
|
b.updateTypes = make([]string, 0)
|
||||||
@@ -283,7 +292,8 @@ func (b *Bot) handleCallback(update *Update) {
|
|||||||
|
|
||||||
for _, plugin := range b.plugins {
|
for _, plugin := range b.plugins {
|
||||||
if plugin.UpdateListener != nil {
|
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{
|
_, err := ctx.Bot.SendMessage(&SendMessageP{
|
||||||
ChatID: ctx.Msg.Chat.ID,
|
ChatID: ctx.Msg.Chat.ID,
|
||||||
Text: text,
|
Text: text,
|
||||||
ParseMode: "markdown",
|
ParseMode: ParseMD,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.Bot.logger.Error(err)
|
ctx.Bot.logger.Error(err)
|
||||||
|
|||||||
35
logger.go
35
logger.go
@@ -11,11 +11,14 @@ import (
|
|||||||
"github.com/fatih/color"
|
"github.com/fatih/color"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type LoggerWriter func(level LogLevel, prefix, traceback string, message []any)
|
||||||
|
|
||||||
type Logger struct {
|
type Logger struct {
|
||||||
prefix string
|
prefix string
|
||||||
level LogLevel
|
level LogLevel
|
||||||
printTraceback bool
|
printTraceback bool
|
||||||
printTime bool
|
printTime bool
|
||||||
|
writers []LoggerWriter
|
||||||
|
|
||||||
f *os.File
|
f *os.File
|
||||||
}
|
}
|
||||||
@@ -26,6 +29,10 @@ type LogLevel struct {
|
|||||||
c color.Attribute
|
c color.Attribute
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (l *LogLevel) GetName() string {
|
||||||
|
return l.t
|
||||||
|
}
|
||||||
|
|
||||||
type MethodTraceback struct {
|
type MethodTraceback struct {
|
||||||
Package string
|
Package string
|
||||||
Method string
|
Method string
|
||||||
@@ -36,11 +43,11 @@ type MethodTraceback struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
INFO LogLevel = LogLevel{n: 0, t: "info", c: color.FgWhite}
|
INFO = LogLevel{n: 0, t: "info", c: color.FgWhite}
|
||||||
WARN LogLevel = LogLevel{n: 1, t: "warn", c: color.FgHiYellow}
|
WARN = LogLevel{n: 1, t: "warn", c: color.FgHiYellow}
|
||||||
ERROR LogLevel = LogLevel{n: 2, t: "error", c: color.FgHiRed}
|
ERROR = LogLevel{n: 2, t: "error", c: color.FgHiRed}
|
||||||
FATAL LogLevel = LogLevel{n: 3, t: "fatal", c: color.FgRed}
|
FATAL = LogLevel{n: 3, t: "fatal", c: color.FgRed}
|
||||||
DEBUG LogLevel = LogLevel{n: 4, t: "debug", c: color.FgGreen}
|
DEBUG = LogLevel{n: 4, t: "debug", c: color.FgGreen}
|
||||||
)
|
)
|
||||||
|
|
||||||
func CreateLogger() *Logger {
|
func CreateLogger() *Logger {
|
||||||
@@ -76,6 +83,14 @@ func (l *Logger) PrintTraceback(b bool) *Logger {
|
|||||||
l.printTraceback = b
|
l.printTraceback = b
|
||||||
return l
|
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) {
|
func (l *Logger) Info(m ...any) {
|
||||||
l.print(INFO, m)
|
l.print(INFO, m)
|
||||||
@@ -152,7 +167,15 @@ func (l *Logger) print(level LogLevel, m []any) {
|
|||||||
if l.level.n < level.n {
|
if l.level.n < level.n {
|
||||||
return
|
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 l.f != nil {
|
||||||
if _, err := l.f.Write([]byte(l.buildString(level, m) + "\n")); err != nil {
|
if _, err := l.f.Write([]byte(l.buildString(level, m) + "\n")); err != nil {
|
||||||
|
|||||||
Reference in New Issue
Block a user