Replace logrus with slog
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user