77 lines
1.2 KiB
Go
77 lines
1.2 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
|
|
"go.arsenm.dev/logger"
|
|
"go.arsenm.dev/logger/log"
|
|
)
|
|
|
|
func init() {
|
|
l := logger.NewPretty(os.Stderr)
|
|
|
|
if os.Getenv("LEMMY_REPLY_BOT_DEBUG") == "1" {
|
|
l.Level = logger.LogLevelDebug
|
|
}
|
|
|
|
log.Logger = l
|
|
}
|
|
|
|
type retryableLogger struct{}
|
|
|
|
func (retryableLogger) Error(msg string, v ...any) {
|
|
msgs := splitMsgs(v)
|
|
evt := log.Error(msg)
|
|
sendEvt(evt, msgs)
|
|
}
|
|
|
|
func (retryableLogger) Info(msg string, v ...any) {
|
|
msgs := splitMsgs(v)
|
|
evt := log.Info(msg)
|
|
sendEvt(evt, msgs)
|
|
|
|
}
|
|
|
|
func (retryableLogger) Debug(msg string, v ...any) {
|
|
msgs := splitMsgs(v)
|
|
evt := log.Debug(msg)
|
|
sendEvt(evt, msgs)
|
|
}
|
|
|
|
func (retryableLogger) Warn(msg string, v ...any) {
|
|
msgs := splitMsgs(v)
|
|
evt := log.Warn(msg)
|
|
sendEvt(evt, msgs)
|
|
}
|
|
|
|
func splitMsgs(v []any) map[string]any {
|
|
out := map[string]any{}
|
|
|
|
for i, val := range v {
|
|
if (i+1)%2 == 0 {
|
|
continue
|
|
}
|
|
|
|
out[val.(string)] = v[i+1]
|
|
}
|
|
|
|
return out
|
|
}
|
|
|
|
func sendEvt(evt logger.LogBuilder, msgs map[string]any) {
|
|
for name, val := range msgs {
|
|
switch val := val.(type) {
|
|
case int:
|
|
evt = evt.Int(name, val)
|
|
case string:
|
|
evt = evt.Str(name, val)
|
|
case fmt.Stringer:
|
|
evt = evt.Stringer(name, val)
|
|
default:
|
|
evt = evt.Any(name, val)
|
|
}
|
|
}
|
|
evt.Send()
|
|
}
|