LPX55
major(feat): per-agent logging system with AgentLogger class
f78b194
raw
history blame
1.89 kB
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")