diff --git a/src/foraging_gui/Foraging.py b/src/foraging_gui/Foraging.py index 88a63f3b6..e2b3cfd39 100644 --- a/src/foraging_gui/Foraging.py +++ b/src/foraging_gui/Foraging.py @@ -377,21 +377,23 @@ def __init__(self, parent=None, box_number=1, start_bonsai_ide=True): def setup_lifecycle_logger(self) -> logging.Logger: """ - Creates logger for start, stop, and failure events with formatter adhering to aind log standards. + Creates loki logger for start, stop, and failure events with formatter adhering to aind log standards. """ - # Ensure the directory exists - os.makedirs(Path(self.Settings["lifecycle_log_dir"]), exist_ok=True) - + handler = logging_loki.LokiHandler( + url="http://eng-logtools:3100/loki/api/v1/push", + tags={"software_name": "dynamic-foraging-task", + "rig_id": os.environ.get("aibs_comp_id", "unknown"), + }, + version="1", + ) + handler.emitter.session.headers["X-Scope-OrgID"] = "tenant1" + handler.setLevel(logging.INFO) lifecycle_logger = logging.getLogger("lifecycle") lifecycle_logger.setLevel(logging.INFO) - - timestamp = datetime.now().strftime("%Y%m%dT%H%M%SZ") - filename = f"lifecycle_log_{timestamp}.jsonl" - file_handler = logging.FileHandler(os.path.join(self.Settings["lifecycle_log_dir"], filename), encoding="utf-8") - file_handler.setLevel(logging.INFO) - file_handler.setFormatter(log_schema.DefaultFormatter()) - lifecycle_logger.addHandler(file_handler) + handler.setLevel(logging.INFO) + handler.setFormatter(log_schema.DefaultFormatter()) + lifecycle_logger.addHandler(handler) return lifecycle_logger @@ -1998,7 +2000,6 @@ def _GetSettings(self): "aind_watchdog_service", "manifest", ), - "lifecycle_log_dir": os.path.join("C://Program Data//AllenInstitute//dynamic-foraging-task//logs"), "transfer_service_job_type": "dynamic_foraging_compression", "auto_engage": True, "clear_figure_after_save": True, @@ -6152,9 +6153,11 @@ def _Start(self): if self.logging_type != 0: self.Ot_log_folder = self._restartlogging() # Need to log start event after session_name has been set in_restartlogging - self.lifecycle_logger.info("Session started.", extra={"subject_id": self.behavior_session_model.subject, + self.lifecycle_logger.info("Session started.", extra={ + "subject_id": self.behavior_session_model.subject, "acquisition_name": self.behavior_session_model.session_name, - "event_type": "stage_start"}) + "event_type": "stage_start", + }) except Exception as e: if "ConnectionAbortedError" in str(e): logging.info("lost bonsai connection: restartlogging()") @@ -7370,17 +7373,18 @@ def _helper(username: str, domain: str, domain_username: Optional[str]) -> bool: logger.error("Timeout occurred while validating username: %s", e) raise - def setup_loki_logging(box_number): + db_file = os.getenv( "SIPE_DB_FILE", r"//allen/aibs/mpe/keepass/sipe_sw_passwords.kdbx" - ) + ) key_file = os.getenv( "SIPE_KEY_FILE", - r"c:\ProgramData\AIBS_MPE\.secrets\sipe_sw_passwords.keyx", + r"C:\ProgramData\AIBS_MPE\.secrets\sipe_sw_passwords.keyx", ) kp = PyKeePass(db_file, keyfile=key_file) entry = kp.find_entries(title="Loki Credentials", first=True) + session = md5( ( "".join([str(datetime.now()), platform.node(), str(os.getpid())]) diff --git a/src/foraging_gui/__init__.py b/src/foraging_gui/__init__.py index 8ce2fa47b..4e06083c2 100644 --- a/src/foraging_gui/__init__.py +++ b/src/foraging_gui/__init__.py @@ -1,2 +1,2 @@ -__version__ = "1.6.65" +__version__ = "1.6.74" diff --git a/src/foraging_gui/settings_model.py b/src/foraging_gui/settings_model.py index 77dac0bfd..0cb890735 100644 --- a/src/foraging_gui/settings_model.py +++ b/src/foraging_gui/settings_model.py @@ -182,7 +182,6 @@ class DFTSettingsModel(BaseModel): save_each_trial: bool AutomaticUpload: bool manifest_flag_dir: str - lifecycle_log_dir: Path transfer_service_job_type: str auto_engage: bool clear_figure_after_save: bool