diff --git a/src/control_backend/agents/bdi/bdi_program_manager.py b/src/control_backend/agents/bdi/bdi_program_manager.py index 730c8e5..0b1c32e 100644 --- a/src/control_backend/agents/bdi/bdi_program_manager.py +++ b/src/control_backend/agents/bdi/bdi_program_manager.py @@ -1,10 +1,12 @@ import asyncio import json +import logging import zmq from pydantic import ValidationError from zmq.asyncio import Context +import control_backend from control_backend.agents import BaseAgent from control_backend.agents.bdi.agentspeak_generator import AgentSpeakGenerator from control_backend.core.config import settings @@ -19,6 +21,8 @@ from control_backend.schemas.program import ( Program, ) +experiment_logger = logging.getLogger(settings.logging_settings.experiment_logger_name) + class BDIProgramManager(BaseAgent): """ @@ -241,6 +245,18 @@ class BDIProgramManager(BaseAgent): await self.send(extractor_msg) self.logger.debug("Sent message to extractor agent to clear history.") + @staticmethod + def _rollover_experiment_logs(): + """ + A new experiment program started; make a new experiment log file. + """ + handlers = logging.getLogger("experiment").handlers + for handler in handlers: + if isinstance(handler, control_backend.logging.DatedFileHandler): + experiment_logger.action("Doing rollover...") + handler.do_rollover() + experiment_logger.debug("Finished rollover.") + async def _receive_programs(self): """ Continuous loop that receives program updates from the HTTP endpoint. @@ -261,6 +277,7 @@ class BDIProgramManager(BaseAgent): self._initialize_internal_state(program) await self._send_program_to_user_interrupt(program) await self._send_clear_llm_history() + self._rollover_experiment_logs() await asyncio.gather( self._create_agentspeak_and_send_to_bdi(program),