Replace logrus with slog

This commit is contained in:
eleksir
2025-11-15 16:15:00 +03:00
parent ee5d40cfee
commit a128b473ff
388 changed files with 272 additions and 224310 deletions

View File

@@ -4,6 +4,7 @@ package main
import (
"crypto/tls"
"fmt"
"log/slog"
"os"
"os/signal"
"regexp"
@@ -12,9 +13,9 @@ import (
_ "embed"
"buny-jabber-bot/internal/jabber"
"buny-jabber-bot/internal/log"
"github.com/eleksir/go-xmpp"
log "github.com/sirupsen/logrus"
"gopkg.in/tomb.v2"
)
@@ -23,63 +24,44 @@ var version string //nolint: grouper
// main - фактичеcки, начало и основное тело программы.
func main() {
var err error
var (
err error
)
for {
var j = jabber.Jabber{ //nolint:exhaustruct
SigChan: make(chan os.Signal, 1),
GTomb: tomb.Tomb{},
RoomsConnected: make([]string, 1),
}
log.SetFormatter(&log.TextFormatter{ //nolint:exhaustruct
DisableQuote: true,
DisableLevelTruncation: false,
DisableColors: true,
FullTimestamp: true,
TimestampFormat: time.DateTime,
})
var (
logfile = os.Stderr
j = jabber.Jabber{ //nolint:exhaustruct
SigChan: make(chan os.Signal, 1),
GTomb: tomb.Tomb{},
RoomsConnected: make([]string, 1),
}
)
if err := j.ReadConfig(); err != nil {
log.Error(err)
log.Errorf("%s", err)
os.Exit(1)
}
j.C.Version = version
switch j.C.Loglevel {
case "fatal":
log.SetLevel(log.FatalLevel)
case "error":
log.SetLevel(log.ErrorLevel)
case "warn":
log.SetLevel(log.WarnLevel)
case "info":
log.SetLevel(log.InfoLevel)
case "debug":
log.SetLevel(log.DebugLevel)
case "trace":
log.SetLevel(log.TraceLevel)
default:
log.SetLevel(log.InfoLevel)
}
// Откроем лог и скормим его логгеру.
if j.C.Log != "" {
logfile, err := os.OpenFile(j.C.Log, os.O_WRONLY|os.O_APPEND|os.O_CREATE, 0644)
logfile, err = os.OpenFile(j.C.Log, os.O_WRONLY|os.O_APPEND|os.O_CREATE, 0644)
if err != nil {
log.Fatalf("Unable to open log file %s: %s", j.C.Log, err)
log.Errorf("Unable to open log file %s: %s", j.C.Log, err)
os.Exit(1)
}
log.SetOutput(logfile)
}
log.Init(j.C.Loglevel, logfile)
j.C.ExeName, err = os.Executable()
if err != nil {
log.Panicf("Unable to find my executable: %s", err)
log.Fatalf("Unable to find my executable: %s", err)
}
// handle pricky windows case. But honestly i do not expect it runs on windows.
@@ -98,25 +80,25 @@ func main() {
verboseClient := false
if myLogLevel == log.TraceLevel {
if log.LogLevel == slog.LevelDebug {
verboseClient = true
}
// Самое время вгрузить белые и чёрные списки, если что - получим ошибку в лог.
if err := j.ReadWhitelist(); err != nil {
log.Error(err)
log.Error(err.Error())
os.Exit(1)
}
if err := j.ReadBlacklist(); err != nil {
log.Error(err)
log.Error(err.Error())
os.Exit(1)
}
// github.com/mattn/go-xmpp пишет в stdio, нам этого не надо, ловим выхлоп его в logrus с уровнем trace.
xmpp.DebugWriter = log.WithFields(log.Fields{"logger": "stdlib"}).WriterLevel(log.TraceLevel)
xmpp.DebugWriter = log.Writer
// Хэндлер сигналов.
j.GTomb.Go(func() error { return j.SigHandler() }) //nolint: gocritic