Beta/commandes/autres/logger.py

54 lines
1.7 KiB
Python

import logging
import json
from datetime import datetime
from .config import config
class ActionLogger:
def __init__(self, log_file: str = 'data/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()