From c9a6a3e807f573fb1765a4273ed0dbb222a69f43 Mon Sep 17 00:00:00 2001 From: ReenigneArcher <42013603+ReenigneArcher@users.noreply.github.com> Date: Wed, 3 Jun 2026 10:24:44 -0400 Subject: [PATCH] fix(logging): use logger.exception in exception handling logs --- src/common/database.py | 20 ++++++++++---------- src/common/rank.py | 23 ++++++++++++----------- src/discord_bot/bot.py | 4 ++-- src/discord_bot/cogs/autoban.py | 8 +++----- src/discord_bot/cogs/rank.py | 8 ++++---- src/reddit_bot/bot.py | 20 ++++++++++---------- src/reddit_bot/cogs/rank.py | 16 ++++++++-------- 7 files changed, 49 insertions(+), 50 deletions(-) diff --git a/src/common/database.py b/src/common/database.py index 79c017b..1769ac4 100644 --- a/src/common/database.py +++ b/src/common/database.py @@ -103,8 +103,8 @@ def __init__(self, db_name: str, db_dir: Union[str, Path] = data_dir, use_git: b try: self.repo.git.push('--set-upstream', 'origin', self.repo_branch) logger.info(f"Created and pushed new empty branch '{self.repo_branch}'") - except git.exc.GitCommandError as e: - logger.error(f"Failed to push new branch: {str(e)}") + except git.exc.GitCommandError: + logger.exception("Failed to push new branch") # Continue anyway - we might not have push permissions else: # Re-raise if it's a different error @@ -184,8 +184,8 @@ def _configure_repo(self): try: origin = self.repo.remote('origin') origin.set_url(new_url) - except git.exc.GitCommandError as e: - logger.error(f"Failed to update remote URL: {str(e)}") + except git.exc.GitCommandError: + logger.exception("Failed to update remote URL") # Continue anyway, might work with stored credentials def _check_for_migration(self): @@ -270,8 +270,8 @@ def _migrate_from_shelve(self): migration_db.close() logger.info(f"Migration completed successfully: {self.json_path}") - except Exception as e: - logger.error(f"Migration failed: {str(e)}") + except Exception: + logger.exception("Migration failed") def __enter__(self): self.lock.acquire() @@ -327,11 +327,11 @@ def sync(self): push_url = f"{protocol}://{self.git_user_name}:{self.git_token}@{repo_path}" self.repo.git.push(push_url, self.repo_branch) logger.info("Pushed changes to remote git data repository") - except git.exc.GitCommandError as e: - logger.error(f"Failed to push changes: {str(e)}") + except git.exc.GitCommandError: + logger.exception("Failed to push changes") - except Exception as e: - logger.error(f"Git operation failed: {str(e)}") + except Exception: + logger.exception("Git operation failed") finally: # Ensure database is ready for next use if self.tinydb is None: diff --git a/src/common/rank.py b/src/common/rank.py index 023aa34..c20b6b1 100644 --- a/src/common/rank.py +++ b/src/common/rank.py @@ -628,10 +628,10 @@ def _do_reddit_migration( total_submissions += 1 elif skipped: skipped_submissions += 1 - except Exception as e: + except Exception: author_name = submission.get('author', 'unknown') - logger.error( - f"Unexpected error processing submission by '{author_name}': {type(e).__name__}: {e}") + logger.exception( + f"Unexpected error processing submission by '{author_name}'") skipped_submissions += 1 # Process comments @@ -647,16 +647,17 @@ def _do_reddit_migration( total_comments += 1 elif skipped: skipped_comments += 1 - except Exception as e: + except Exception: author_name = comment.get('author', 'unknown') - logger.error(f"Unexpected error processing comment by '{author_name}': {type(e).__name__}: {e}") + logger.exception( + f"Unexpected error processing comment by '{author_name}'") skipped_comments += 1 # Update the rank database new_users, updated_users = self._update_reddit_rank_database(community_id, user_xp_map) - except Exception as e: - logger.error(f"Error during Reddit migration: {type(e).__name__}: {e}", exc_info=True) + except Exception: + logger.exception("Error during Reddit migration") database.GIT_ENABLED = original_git_enabled raise @@ -749,11 +750,11 @@ async def _fetch_mee6_page( logger.info(f"Processing {player_count} players from page {page}") return data['players'] - except aiohttp.ClientError as e: - logger.error(f"HTTP error during migration: {e}", exc_info=True) + except aiohttp.ClientError: + logger.exception("HTTP error during migration") return None - except Exception as e: - logger.error(f"Unexpected error during migration: {e}", exc_info=True) + except Exception: + logger.exception("Unexpected error during migration") import traceback traceback.print_exc() return None diff --git a/src/discord_bot/bot.py b/src/discord_bot/bot.py index 274f219..2e459e4 100644 --- a/src/discord_bot/bot.py +++ b/src/discord_bot/bot.py @@ -119,8 +119,8 @@ async def async_send_message( try: return await channel.send(content=message, embed=embed) - except Exception as e: - logger.error(f"Error sending message: {e}", exc_info=True) + except Exception: + logger.exception("Error sending message") self.DEGRADED = True def send_message( diff --git a/src/discord_bot/cogs/autoban.py b/src/discord_bot/cogs/autoban.py index e7982cd..9e0d539 100644 --- a/src/discord_bot/cogs/autoban.py +++ b/src/discord_bot/cogs/autoban.py @@ -75,13 +75,11 @@ async def on_message(self, message: discord.Message): guild.name, guild.id, ) - except discord.HTTPException as e: - logger.error( - "HTTP error while banning user %s (%s): %s", + except discord.HTTPException: + logger.exception( + "HTTP error while banning user %s (%s)", message.author, message.author.id, - e, - exc_info=True, ) diff --git a/src/discord_bot/cogs/rank.py b/src/discord_bot/cogs/rank.py index 6e1f0df..e9c4611 100644 --- a/src/discord_bot/cogs/rank.py +++ b/src/discord_bot/cogs/rank.py @@ -61,8 +61,8 @@ async def xp_award_task(self): ) embed.set_thumbnail(url=user.display_avatar.url) await channel.send(embed=embed) - except Exception as e: - logger.error(f"Error handling level up notification: {e}", exc_info=True) + except Exception: + logger.exception("Error handling level up notification") # Clear the set for the next minute self.active_users.clear() @@ -551,8 +551,8 @@ async def auto_migrate_mee6(self): except discord.HTTPException: pass # Silently fail if can't send - except Exception as e: - logger.error(f"Error during automatic Mee6 migration for guild {guild.id}: {e}", exc_info=True) + except Exception: + logger.exception(f"Error during automatic Mee6 migration for guild {guild.id}") def setup(bot): diff --git a/src/reddit_bot/bot.py b/src/reddit_bot/bot.py index a2a28d1..4bbbd3d 100644 --- a/src/reddit_bot/bot.py +++ b/src/reddit_bot/bot.py @@ -146,8 +146,8 @@ def process_comment(self, comment: models.Comment): xp_result = self.award_reddit_xp(comment.author) if xp_result and xp_result.get('level_up'): logger.info(f"User {comment.author.name} leveled up to {xp_result.get('level')}!") - except Exception as e: - logger.error(f"Error awarding XP: {e}", exc_info=True) + except Exception: + logger.exception("Error awarding XP") comment_data = self.slash_commands(comment=comment, comment_data=comment_data) comment_data['processed'] = True @@ -217,8 +217,8 @@ def process_submission(self, submission: models.Submission): xp_result = self.award_reddit_xp(submission.author) if xp_result and xp_result.get('level_up'): logger.info(f"User {submission.author.name} leveled up to {xp_result.get('level')}!") - except Exception as e: - logger.error(f"Error awarding XP: {e}", exc_info=True) + except Exception: + logger.exception("Error awarding XP") if os.getenv('DISCORD_REDDIT_CHANNEL_ID'): submission_data = self.discord(submission=submission, submission_data=submission_data) @@ -288,8 +288,8 @@ def migrate_reddit_ranks(self): logger.info(f"Reddit ranks migration completed: {stats}") - except Exception as e: - logger.error(f"Error during Reddit ranks migration: {e}", exc_info=True) + except Exception: + logger.exception("Error during Reddit ranks migration") self.DEGRADED = True reason = inspector.current_name() self.DEGRADED_REASONS.append(reason) if reason not in self.DEGRADED_REASONS else None @@ -407,8 +407,8 @@ def _comment_loop(self, test: bool = False): break if test: return comment - except prawcore.exceptions.ServerError as e: - logger.error(f"Server Error: {e}", exc_info=True) + except prawcore.exceptions.ServerError: + logger.exception("Server Error") self.DEGRADED = True self.DEGRADED_REASONS.append(reason) if reason not in self.DEGRADED_REASONS else None time.sleep(60) @@ -430,8 +430,8 @@ def _submission_loop(self, test: bool = False): break if test: return submission - except prawcore.exceptions.ServerError as e: - logger.error(f"Server Error: {e}", exc_info=True) + except prawcore.exceptions.ServerError: + logger.exception("Server Error") self.DEGRADED = True self.DEGRADED_REASONS.append(reason) if reason not in self.DEGRADED_REASONS else None time.sleep(60) diff --git a/src/reddit_bot/cogs/rank.py b/src/reddit_bot/cogs/rank.py index 34b39ba..9280f1c 100644 --- a/src/reddit_bot/cogs/rank.py +++ b/src/reddit_bot/cogs/rank.py @@ -79,8 +79,8 @@ def __init__(self, name, subreddit_id): 'progress': progress, 'xp_for_next_level': next_level_xp - user_data['xp'] } - except Exception as e: - logger.error(f"Error getting rank for Reddit user {username}: {e}", exc_info=True) + except Exception: + logger.exception(f"Error getting rank for Reddit user {username}") return None def get_leaderboard(self, limit: int = 10, offset: int = 0): @@ -112,8 +112,8 @@ def get_leaderboard(self, limit: int = 10, offset: int = 0): entry['level'] = self.rank_system.calculate_level(entry['xp']) return leaderboard - except Exception as e: - logger.error(f"Error getting Reddit leaderboard: {e}", exc_info=True) + except Exception: + logger.exception("Error getting Reddit leaderboard") return [] def respond_to_rank_command(self, comment: models.Comment): @@ -174,8 +174,8 @@ def respond_to_rank_command(self, comment: models.Comment): comment.reply(response) return True - except Exception as e: - logger.error(f"Error responding to rank command: {e}", exc_info=True) + except Exception: + logger.exception("Error responding to rank command") return False def respond_to_leaderboard_command(self, comment: models.Comment): @@ -236,6 +236,6 @@ def respond_to_leaderboard_command(self, comment: models.Comment): comment.reply(response) return True - except Exception as e: - logger.error(f"Error responding to leaderboard command: {e}", exc_info=True) + except Exception: + logger.exception("Error responding to leaderboard command") return False