2026-02-06 22:23:20 +01:00
|
|
|
import logging
|
|
|
|
|
import json
|
|
|
|
|
from datetime import datetime
|
|
|
|
|
from .config import config
|
|
|
|
|
|
|
|
|
|
class ActionLogger:
|
2026-06-13 14:46:02 +00:00
|
|
|
def __init__(self, log_file: str = 'data/actions.log'):
|
2026-02-06 22:23:20 +01:00
|
|
|
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."""
|
2026-06-16 17:09:34 +00:00
|
|
|
if not level or not message:
|
|
|
|
|
return
|
|
|
|
|
level_lower = level.casefold()
|
|
|
|
|
if level_lower == 'info':
|
2026-02-06 22:23:20 +01:00
|
|
|
self.logger.info(message)
|
2026-06-16 17:09:34 +00:00
|
|
|
elif level_lower == 'warning':
|
2026-02-06 22:23:20 +01:00
|
|
|
self.logger.warning(message)
|
2026-06-16 17:09:34 +00:00
|
|
|
elif level_lower == 'error':
|
2026-02-06 22:23:20 +01:00
|
|
|
self.logger.error(message)
|
2026-06-16 17:09:34 +00:00
|
|
|
elif level_lower == 'debug':
|
2026-02-06 22:23:20 +01:00
|
|
|
self.logger.debug(message)
|
|
|
|
|
|
|
|
|
|
# Global logger instance
|
|
|
|
|
action_logger = ActionLogger()
|