From 6b6bfae51669e2e2087216eae663f823e4491796 Mon Sep 17 00:00:00 2001 From: wlinator Date: Sun, 2 Jul 2023 08:20:16 -0400 Subject: [PATCH] Add detailed logger --- .gitignore | 3 ++- data/Item.py | 7 ++++-- db/database.py | 5 ++++- db/tables.py | 6 +++++- handlers/XPHandler.py | 10 +++++---- main.py | 50 +++++++++++++++++++++++++++++++++++++++++-- modules/basic.py | 7 ++++-- 7 files changed, 75 insertions(+), 13 deletions(-) diff --git a/.gitignore b/.gitignore index ccade26..15a4615 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,5 @@ venv/ __pycache__/ *.db -.env \ No newline at end of file +.env +*.log \ No newline at end of file diff --git a/data/Item.py b/data/Item.py index 9530141..fffd15b 100644 --- a/data/Item.py +++ b/data/Item.py @@ -1,8 +1,11 @@ import json +import logging import sqlite3 from db import database +racu_logs = logging.getLogger('Racu.Core') + class Item: def __init__(self, item_id): @@ -59,7 +62,7 @@ class Item: database.execute_query(query, (index, name, display_name, description, image_url, emote_id, quote, item_type)) - print("Items inserted into the database successfully.") + racu_logs.info("Items inserted into the database successfully.") @staticmethod def get_all_item_names(): @@ -75,7 +78,7 @@ class Item: return item_names except sqlite3.Error: - print(sqlite3.Error) + racu_logs.error(sqlite3.Error) return [] @staticmethod diff --git a/db/database.py b/db/database.py index b590225..957602d 100644 --- a/db/database.py +++ b/db/database.py @@ -1,12 +1,15 @@ +import logging import sqlite3 from sqlite3 import Error +racu_logs = logging.getLogger('Racu.Core') + def create_connection(): try: conn = sqlite3.connect("db/rcu.db") except Error as e: - print("'create_connection()' Error occurred: {}".format(e)) + racu_logs.error("'create_connection()' Error occurred: {}".format(e)) return return conn diff --git a/db/tables.py b/db/tables.py index 755d2d8..50cfc35 100644 --- a/db/tables.py +++ b/db/tables.py @@ -1,5 +1,9 @@ +import logging + from db import database +racu_logs = logging.getLogger('Racu.Core') + xp_table = """ CREATE TABLE IF NOT EXISTS xp ( user_id INTEGER PRIMARY KEY NOT NULL, @@ -95,4 +99,4 @@ def sync_database(): database.execute_query(stats_slots) database.execute_query(stats_duel) - print("On startup: database synced.") + racu_logs.info("Database was synced.") diff --git a/handlers/XPHandler.py b/handlers/XPHandler.py index 70eba9b..371dcb0 100644 --- a/handlers/XPHandler.py +++ b/handlers/XPHandler.py @@ -1,9 +1,12 @@ +import logging import time from data.Currency import Currency from data.Xp import Xp from sb_tools import level_messages +racu_logs = logging.getLogger('Racu.Core') + class XPHandler: def __init__(self): @@ -15,7 +18,7 @@ class XPHandler: xp = Xp(user_id) if xp.ctime and current_time < xp.ctime: - print(f"XP UPDATE --- {message.author.name} sent a message but is on XP cooldown.") + racu_logs.info(f"XP UPDATE --- {message.author.name} sent a message but is on XP cooldown.") return new_xp = xp.xp + xp.xp_gain @@ -37,11 +40,11 @@ class XPHandler: user_currency.add_special(1) user_currency.push() - print(f"XP UPDATE --- {message.author.name} leveled up; new_level = {xp.level}.") + racu_logs.info(f"XP UPDATE --- {message.author.name} leveled up; new_level = {xp.level}.") else: xp.xp += xp.xp_gain - print(f"XP UPDATE --- {message.author.name} gained {xp.xp_gain} XP; new_xp = {new_xp}.") + racu_logs.info(f"XP UPDATE --- {message.author.name} gained {xp.xp_gain} XP; new_xp = {new_xp}.") xp.ctime = current_time + xp.new_cooldown xp.push() @@ -70,7 +73,6 @@ class XPHandler: guild = user.guild if guild.id != 719227135151046699: - print("Not Rave Cave -> no level-up role") return current_level_role = None diff --git a/main.py b/main.py index 815c614..efca78d 100644 --- a/main.py +++ b/main.py @@ -9,8 +9,10 @@ SPECIAL_BALANCE_NAME= import logging import os +from datetime import datetime import discord +import pytz from dotenv import load_dotenv import db.tables @@ -20,7 +22,50 @@ from data.Item import Item from handlers.ReactionHandler import ReactionHandler from handlers.XPHandler import XPHandler -logging.basicConfig(level=logging.INFO) + +class RacuFormatter(logging.Formatter): + def converter(self, timestamp): + tz = pytz.timezone('US/Eastern') + converted_time = datetime.fromtimestamp(timestamp, tz) + return converted_time + + def formatTime(self, record, datefmt=None): + timestamp = self.converter(record.created) + if datefmt: + return timestamp.strftime(datefmt) + else: + return str(timestamp) + + +def setup_logger(): + # Initialize the logger + logger = logging.getLogger('Racu.Core') + if logger.handlers: + # Handlers already exist, no need to add more + return logger + + logger.setLevel(logging.DEBUG) + + # Create console handler and set level and formatter + console_handler = logging.StreamHandler() + console_handler.setLevel(logging.DEBUG) + console_formatter = RacuFormatter('[%(asctime)s] [%(name)s] [%(levelname)s] %(message)s', + datefmt='%Y-%m-%d %H:%M:%S') + console_handler.setFormatter(console_formatter) + logger.addHandler(console_handler) + + # Create file handler and set level and formatter + file_handler = logging.FileHandler('racu.log') + file_handler.setLevel(logging.DEBUG) + file_formatter = RacuFormatter('[%(asctime)s] [%(name)s] [%(levelname)s] %(message)s', + datefmt='%Y-%m-%d %H:%M:%S') + file_handler.setFormatter(file_formatter) + logger.addHandler(file_handler) + + return logger + + +racu_logs = setup_logger() load_dotenv('.env') # load all json @@ -43,7 +88,7 @@ def load_cogs(reload=False): sbbot.load_extension(f'modules.{filename[:-3]}') else: sbbot.reload_extension(f'modules.{filename[:-3]}') - print(f"Module '{filename}' ready.") + racu_logs.info(f"Module {filename} loaded.") @sbbot.event @@ -55,6 +100,7 @@ async def on_ready(): # reload all cogs to sync db parameters load_cogs(reload=True) + racu_logs.info("RACU IS BOOTED/READY") """ https://docs.pycord.dev/en/stable/api/events.html#discord.on_ready diff --git a/modules/basic.py b/modules/basic.py index 5f9014f..8b04f47 100644 --- a/modules/basic.py +++ b/modules/basic.py @@ -1,4 +1,5 @@ import asyncio +import logging import subprocess import discord @@ -6,6 +7,8 @@ from discord.ext import commands from sb_tools import interaction, embeds, universal +racu_logs = logging.getLogger('Racu.Core') + class BasicCog(commands.Cog): def __init__(self, sbbot): @@ -30,9 +33,9 @@ class BasicCog(commands.Cog): await ctx.respond(content="Restarting..", ephemeral=True) try: - print(subprocess.check_output(["/bin/bash", "racu_update.sh"])) + racu_logs.info(subprocess.check_output(["/bin/bash", "racu_update.sh"])) except subprocess.CalledProcessError as e: - print(f"Error executing the script: {e.output.decode()}") + racu_logs.error(f"Error executing the script: {e.output.decode()}") @commands.slash_command( name="intro",