import logging from pathlib import Path AGENT_LOG_FILES = { "ensemble_monitor": "./agent_logs/ensemble_monitor.log", "weight_optimization": "./agent_logs/weight_optimization.log", "system_health": "./agent_logs/system_health.log", "context_intelligence": "./agent_logs/context_intelligence.log", "forensic_anomaly_detection": "./agent_logs/forensic_anomaly_detection.log", } class AgentLogger: def __init__(self, agent_log_files=None): self.agent_log_files = agent_log_files or AGENT_LOG_FILES self.loggers = {} self._setup_loggers() def _setup_loggers(self): for agent, log_file in self.agent_log_files.items(): Path(log_file).parent.mkdir(parents=True, exist_ok=True) Path(log_file).touch(exist_ok=True) logger = logging.getLogger(f"agent_log.{agent}") logger.setLevel(logging.DEBUG) # Remove existing handlers to avoid duplicate logs for handler in logger.handlers: logger.removeHandler(handler) handler = logging.FileHandler(log_file) handler.setLevel(logging.DEBUG) formatter = logging.Formatter("%(asctime)s - %(levelname)s - %(message)s (%(filename)s:%(lineno)d)") handler.setFormatter(formatter) logger.addHandler(handler) self.loggers[agent] = logger def log(self, agent, level, message): logger = self.loggers.get(agent) if logger: getattr(logger, level)(message) else: raise ValueError(f"No logger found for agent: {agent}") def get_log_file(self, agent): return self.agent_log_files.get(agent) # Usage Example: # agent_logger = AgentLogger() # agent_logger.log("ensemble_monitor", "info", "Ensemble monitoring started.") # log_file_path = agent_logger.get_log_file("ensemble_monitor")