import logging import json from datetime import datetime from .config import config class ActionLogger: def __init__(self, log_file: str = 'actions.log'): self.log_file = log_file self.logger = logging.getLogger('ActionLogger') self.logger.setLevel(logging.INFO) # File handler file_handler = logging.FileHandler(log_file, encoding='utf-8') file_handler.setLevel(logging.INFO) # Formatter formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s') file_handler.setFormatter(formatter) # Add handler if not already added if not self.logger.handlers: self.logger.addHandler(file_handler) def log_action(self, action: str, user: str, guild: str, params: dict, success: bool, error: str = None): """Log an action performed by the bot.""" log_entry = { 'timestamp': datetime.now().isoformat(), 'action': action, 'user': user, 'guild': guild, 'params': params, 'success': success, 'error': error } message = f"ACTION: {json.dumps(log_entry, ensure_ascii=False)}" if success: self.logger.info(message) else: self.logger.error(message) def log_message(self, level: str, message: str): """Log a general message.""" if level.casefold() == 'info': self.logger.info(message) elif level.casefold() == 'warning': self.logger.warning(message) elif level.casefold() == 'error': self.logger.error(message) elif level.casefold() == 'debug': self.logger.debug(message) # Global logger instance action_logger = ActionLogger()