From 8f2fa2ab2dc50a8f97e8e246a26082d5059ee2ca Mon Sep 17 00:00:00 2001 From: LBlend Date: Mon, 14 Nov 2022 02:39:24 +0100 Subject: [PATCH] closes #7 --- src/cogs/errors.py | 12 +++--------- src/logger.py | 14 ++++++++++++++ src/run.py | 4 +++- 3 files changed, 20 insertions(+), 10 deletions(-) create mode 100644 src/logger.py diff --git a/src/cogs/errors.py b/src/cogs/errors.py index a3970b4..33883e8 100644 --- a/src/cogs/errors.py +++ b/src/cogs/errors.py @@ -19,7 +19,7 @@ class Errors(commands.Cog): Prints command execution metadata """ - print( + self.bot.logger.info( f'{datetime.now().strftime("%Y-%m-%d %H:%M:%S")} | ' + f'{"❌ " if ctx.command_failed else "✔ "} {ctx.command} - ' + f'{ctx.author.name}#{ctx.author.discriminator} ({ctx.author.id}) | ' + @@ -92,14 +92,8 @@ class Errors(commands.Cog): embed = embed_templates.error_fatal(ctx, text='En ukjent feil oppstod!') await ctx.send(embed=embed) - # Print full exception to console - print(f'Ignoring exception in command {ctx.command}:', file=sys.stderr) - traceback.print_exception( - type(error), - error, - error.__traceback__, - file=sys.stderr - ) + # Log full exception to file + self.bot.logger.error(''.join(traceback.format_exception(type(error), error, error.__traceback__))) async def setup(bot): diff --git a/src/logger.py b/src/logger.py new file mode 100644 index 0000000..d0eb52a --- /dev/null +++ b/src/logger.py @@ -0,0 +1,14 @@ +import logging +import logging.handlers + + +class BotLogger: + def __init__(self): + logger = logging.getLogger('discord') + logger.setLevel(logging.INFO) + handler = logging.FileHandler(filename='discord.log', encoding='utf-8', mode='w') + formatter = logging.Formatter('[{asctime}] [{levelname:<8}] {name}: {message}', '%Y-%m-%d %H:%M:%S', style='{') + handler.setFormatter(formatter) + logger.addHandler(handler) + + self.logger = logger diff --git a/src/run.py b/src/run.py index b5438f2..57532d6 100644 --- a/src/run.py +++ b/src/run.py @@ -8,6 +8,7 @@ from os import listdir import locale from time import time import psycopg2 +from logger import BotLogger locale.setlocale(locale.LC_ALL, "") @@ -23,6 +24,7 @@ class Bot(commands.Bot): super().__init__( command_prefix=commands.when_mentioned_or(config["bot"]["prefix"]), case_insensitive=True, intents=intents ) + self.logger = BotLogger().logger self.prefix = config["bot"]["prefix"] self.presence = config["bot"].get("presence", {}) @@ -81,4 +83,4 @@ async def on_ready(): ) -bot.run(config["bot"]["token"], reconnect=True) +bot.run(config["bot"]["token"], reconnect=True, log_handler=None)