Use a singleton pattern for logging

This change migrates the internal/logging package to a singleton
pattern. It now exports a Log variable which can be acquired from any
other package.
This commit is contained in:
Piper Pentagram 2024-11-08 13:54:19 -08:00
parent 70fc746ed6
commit a82ba0f51b
2 changed files with 8 additions and 15 deletions

View file

@ -13,10 +13,10 @@ type Logger struct {
} }
var ( var (
logger Logger Log Logger
) )
func InitLogger(appConfig *config.AppConfig) Logger { func InitLogger(appConfig *config.AppConfig) {
lj := &lumberjack.Logger{ lj := &lumberjack.Logger{
Filename: filepath.Join(appConfig.LogDir, appConfig.LogFile), Filename: filepath.Join(appConfig.LogDir, appConfig.LogFile),
@ -26,17 +26,11 @@ func InitLogger(appConfig *config.AppConfig) Logger {
Compress: appConfig.LogCompression, Compress: appConfig.LogCompression,
} }
logger = Logger{ Log = Logger{
slog.New( slog.New(
slog.NewJSONHandler(lj, &slog.HandlerOptions{ slog.NewJSONHandler(lj, &slog.HandlerOptions{
AddSource: appConfig.LogAddSource, AddSource: appConfig.LogAddSource,
}), }),
), ),
} }
return logger
}
func GetLogger() Logger {
return logger
} }

11
main.go
View file

@ -18,7 +18,6 @@ var (
Guild = flag.String("guild", "", "Guild ID") // Do we want it to be tied to one server? Guild = flag.String("guild", "", "Guild ID") // Do we want it to be tied to one server?
appConfig *config.AppConfig appConfig *config.AppConfig
Log logging.Logger
) )
func main() { func main() {
@ -35,7 +34,7 @@ func main() {
log.Fatal(err) log.Fatal(err)
} }
Log = logging.InitLogger(appConfig) logging.InitLogger(appConfig)
err = startBot() err = startBot()
@ -49,21 +48,21 @@ func startBot() error {
err := state.DiscordSession.Open() err := state.DiscordSession.Open()
if err != nil { if err != nil {
Log.Error("could not open discord session", "type", "error", "error", err) logging.Log.Error("could not open discord session", "type", "error", "error", err)
return err return err
} }
Log.Info("shutting down gracefully", "type", "shutdown") logging.Log.Info("shutting down gracefully", "type", "shutdown")
sigch := make(chan os.Signal, 1) sigch := make(chan os.Signal, 1)
signal.Notify(sigch, os.Interrupt) signal.Notify(sigch, os.Interrupt)
<-sigch <-sigch
Log.Info("shutting down gracefully", "type", "shutdown") logging.Log.Info("shutting down gracefully", "type", "shutdown")
err = state.DiscordSession.Close() err = state.DiscordSession.Close()
if err != nil { if err != nil {
Log.Error("could not close discord session gracefully", "type", "error", "error", err) logging.Log.Error("could not close discord session gracefully", "type", "error", "error", err)
return err return err
} }