about summary refs log tree commit diff
path: root/cmd/bot
diff options
context:
space:
mode:
authorMel <einebeere@gmail.com>2022-04-04 14:49:08 +0200
committerMel <einebeere@gmail.com>2022-04-04 14:49:08 +0200
commit3160b53ddfb6773624e96c306aec86ac2e80de31 (patch)
treed3128595aac92ac561cc3277e0f034cde9e093ab /cmd/bot
parent8e8bff65922378c1e7eed752add93972e769978d (diff)
downloadjinx-3160b53ddfb6773624e96c306aec86ac2e80de31.tar.zst
jinx-3160b53ddfb6773624e96c306aec86ac2e80de31.zip
Use zerolog
Diffstat (limited to 'cmd/bot')
-rw-r--r--cmd/bot/main.go39
1 files changed, 32 insertions, 7 deletions
diff --git a/cmd/bot/main.go b/cmd/bot/main.go
index 0f241c9..512b60b 100644
--- a/cmd/bot/main.go
+++ b/cmd/bot/main.go
@@ -1,31 +1,56 @@
 package main
 
 import (
+	"fmt"
 	"jinx/pkg/bot"
-	"log"
 	"os"
 	"os/signal"
 	"syscall"
+	"time"
+
+	"github.com/rs/zerolog"
 )
 
 func main() {
+	logger, err := createLogger()
+	if err != nil {
+		panic(err)
+	}
+
 	token := os.Getenv("BOT_TOKEN")
 	if token == "" {
-		log.Fatal("`BOT_TOKEN` is not set.")
+		logger.Fatal().Msg("`BOT_TOKEN` is not set.")
 	}
 
-	b, err := bot.Start(token)
-	if err != nil {
-		panic(err)
+	logger.Info().Msg("starting jinx!")
+
+	b := bot.NewBot(token, logger)
+
+	if err := b.Start(); err != nil {
+		logger.Fatal().Err(err).Msg("error starting jinx")
 	}
 
 	c := make(chan os.Signal, 2)
 	signal.Notify(c, syscall.SIGINT, syscall.SIGTERM)
 
 	s := <-c
-	log.Printf("received signal: %s! stopping...", s)
+	logger.Info().Msgf("received signal: %s! stopping...", s)
 
 	if err := b.Stop(); err != nil {
-		panic(err)
+		logger.Fatal().Err(err).Msg("error stopping jinx")
+	}
+}
+
+func createLogger() (*zerolog.Logger, error) {
+	timestamp := time.Now().Format(time.RFC3339)
+	logFileName := fmt.Sprintf("log/jinx-%s.log", timestamp)
+	logFile, err := os.OpenFile(logFileName, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666)
+	if err != nil {
+		return nil, err
 	}
+
+	stdout := zerolog.ConsoleWriter{Out: os.Stdout, TimeFormat: time.RFC3339}
+
+	logger := zerolog.New(zerolog.MultiLevelWriter(stdout, logFile)).With().Timestamp().Logger()
+	return &logger, nil
 }