From 38b9aede5732cef21e89558373cde91bb550a06b Mon Sep 17 00:00:00 2001 From: far-galaxy Date: Mon, 27 Mar 2023 22:05:17 +0400 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=BE:=20=D0=BB=D0=BE=D0=B3=D0=B8=D1=80=D0=BE=D0=B2?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=B2=20=D1=84=D0=B0=D0=B9=D0=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.go | 6 ++++-- modules/database/mysql.go | 21 ++++++++++++++++++++- modules/tg/bot.go | 6 ++++++ 3 files changed, 30 insertions(+), 3 deletions(-) diff --git a/main.go b/main.go index 7e40fc4..71f651e 100644 --- a/main.go +++ b/main.go @@ -1,6 +1,7 @@ package main import ( + "io" "log" "os" "strings" @@ -24,6 +25,7 @@ func main() { bot := new(tg.Bot) bot.Week = 5 bot.WkPath = os.Getenv("WK_PATH") + bot.Debug = log.New(io.MultiWriter(os.Stderr, database.CreateLog("messages")), "", log.LstdFlags) err = bot.InitBot(os.Getenv("TELEGRAM_APITOKEN"), *engine) if err != nil { log.Fatal(err) @@ -34,7 +36,7 @@ func main() { for update := range *updates { if update.Message != nil { msg := update.Message - log.Printf("Message [%s] %s", msg.From.UserName, msg.Text) + bot.Debug.Printf("Message [%s] %s", msg.From.UserName, msg.Text) tg_user, err := bot.InitUser(msg.From.ID, msg.From.UserName) if err != nil { @@ -55,7 +57,7 @@ func main() { if update.CallbackQuery != nil { query := update.CallbackQuery - log.Printf("Callback [%s] %s", query.From.UserName, query.Data) + bot.Debug.Printf("Callback [%s] %s", query.From.UserName, query.Data) tg_user, err := bot.InitUser(query.From.ID, query.From.UserName) if err != nil { diff --git a/modules/database/mysql.go b/modules/database/mysql.go index 1344a02..5c03756 100644 --- a/modules/database/mysql.go +++ b/modules/database/mysql.go @@ -1,10 +1,13 @@ package database import ( + "log" "math/rand" + "os" _ "github.com/go-sql-driver/mysql" "xorm.io/xorm" + xlog "xorm.io/xorm/log" "xorm.io/xorm/names" ) @@ -13,7 +16,8 @@ func Connect(user, pass, db string) (*xorm.Engine, error) { if err != nil { return nil, err } - + sqlLogger := xlog.NewSimpleLogger(CreateLog("sql")) + engine.SetLogger(sqlLogger) engine.ShowSQL(true) engine.SetMapper(names.SameMapper{}) @@ -38,3 +42,18 @@ func GenerateID(engine *xorm.Engine) (int64, error) { return id, nil } } + +func CreateLog(name string) *os.File { + if _, err := os.Stat("logs"); os.IsNotExist(err) { + err = os.Mkdir("logs", os.ModePerm) + if err != nil { + log.Fatal("Fail to create log folder") + } + } + fileName := "./logs/" + name + ".log" + logFile, err := os.Create(fileName) + if err != nil { + log.Fatal("Fail to open tg.log file") + } + return logFile +} diff --git a/modules/tg/bot.go b/modules/tg/bot.go index c30ff9e..d224fcb 100644 --- a/modules/tg/bot.go +++ b/modules/tg/bot.go @@ -1,7 +1,9 @@ package tg import ( + "io" "log" + "os" "git.l9labs.ru/anufriev.g.a/l9_stud_bot/modules/database" tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5" @@ -14,6 +16,7 @@ type Bot struct { TG_user database.TgUser Week int WkPath string + Debug *log.Logger } func (bot *Bot) InitBot(token string, engine xorm.Engine) error { @@ -24,6 +27,9 @@ func (bot *Bot) InitBot(token string, engine xorm.Engine) error { } bot.TG.Debug = true + logger := log.New(io.MultiWriter(os.Stderr, database.CreateLog("tg")), "", log.LstdFlags) + tgbotapi.SetLogger(logger) + bot.DB = &engine log.Printf("Authorized on account %s", bot.TG.Self.UserName)