mirror of
https://github.com/memohai/Memoh.git
synced 2026-04-27 07:16:19 +09:00
49 lines
944 B
Go
49 lines
944 B
Go
package telegram
|
|
|
|
import (
|
|
"fmt"
|
|
"log/slog"
|
|
"sync"
|
|
)
|
|
|
|
// slogBotLogger adapts slog.Logger to tgbotapi.BotLogger so library logs go through slog.
|
|
type slogBotLogger struct {
|
|
mu sync.RWMutex
|
|
log *slog.Logger
|
|
}
|
|
|
|
func newSlogBotLogger(log *slog.Logger) *slogBotLogger {
|
|
logger := &slogBotLogger{}
|
|
logger.SetLogger(log)
|
|
return logger
|
|
}
|
|
|
|
func (s *slogBotLogger) SetLogger(log *slog.Logger) {
|
|
s.mu.Lock()
|
|
defer s.mu.Unlock()
|
|
if log == nil {
|
|
log = slog.Default()
|
|
}
|
|
s.log = log
|
|
}
|
|
|
|
func (s *slogBotLogger) current() *slog.Logger {
|
|
s.mu.RLock()
|
|
defer s.mu.RUnlock()
|
|
if s.log == nil {
|
|
return slog.Default()
|
|
}
|
|
return s.log
|
|
}
|
|
|
|
func (s *slogBotLogger) Println(v ...interface{}) {
|
|
s.current().Warn("telegram bot sdk log", slog.String("message", fmt.Sprint(v...)))
|
|
}
|
|
|
|
func (s *slogBotLogger) Printf(format string, v ...interface{}) {
|
|
s.current().Warn(
|
|
"telegram bot sdk log",
|
|
slog.String("message", fmt.Sprintf(format, v...)),
|
|
)
|
|
}
|