Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
6f10174
Merge pull request #1715 from AllenNeuralDynamics/production_testing
ellahiltonvano Feb 24, 2026
6532930
ci: version bump [skip actions]
github-actions[bot] Feb 24, 2026
494b8f9
Merge pull request #1729 from AllenNeuralDynamics/production_testing
ellahiltonvano Mar 24, 2026
6922cb9
ci: version bump [skip actions]
github-actions[bot] Mar 24, 2026
4be51fc
Merge pull request #1734 from AllenNeuralDynamics/production_testing
ellahiltonvano Apr 7, 2026
c1dc98d
ci: version bump [skip actions]
github-actions[bot] Apr 7, 2026
d326afa
Merge pull request #1737 from AllenNeuralDynamics/production_testing
ellahiltonvano Apr 28, 2026
a1f84cc
ci: version bump [skip actions]
github-actions[bot] Apr 28, 2026
5f440fe
Merge pull request #1739 from AllenNeuralDynamics/production_testing
ellahiltonvano May 5, 2026
bfa7c8f
ci: version bump [skip actions]
github-actions[bot] May 5, 2026
c9836f9
Merge pull request #1744 from AllenNeuralDynamics/production_testing
ellahiltonvano May 12, 2026
cf605f1
ci: version bump [skip actions]
github-actions[bot] May 12, 2026
464fc2f
Merge pull request #1747 from AllenNeuralDynamics/production_testing
ellahiltonvano Jun 2, 2026
2a43d66
ci: version bump [skip actions]
github-actions[bot] Jun 2, 2026
4653f67
Merge pull request #1750 from AllenNeuralDynamics/production_testing
alexpiet Jun 16, 2026
a934aa0
ci: version bump [skip actions]
github-actions[bot] Jun 16, 2026
6195067
Merge pull request #1756 from AllenNeuralDynamics/production_testing
ellahiltonvano Jun 30, 2026
974b0e5
ci: version bump [skip actions]
github-actions[bot] Jun 30, 2026
f608d05
logs directly to loki
micahwoodard Jul 15, 2026
9742cd4
use headers
micahwoodard Jul 15, 2026
c4c2110
Merge pull request #1758 from AllenNeuralDynamics/feat-lifecycle-logg…
micahwoodard Jul 15, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 21 additions & 17 deletions src/foraging_gui/Foraging.py
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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()")
Expand Down Expand Up @@ -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())])
Expand Down
2 changes: 1 addition & 1 deletion src/foraging_gui/__init__.py
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
__version__ = "1.6.65"
__version__ = "1.6.74"

1 change: 0 additions & 1 deletion src/foraging_gui/settings_model.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Loading