2.5 KiB
2.5 KiB
Specification: Logging Reorganization and Automated Pruning
Overview
Currently, gui_2.py and the test suites generate a large number of log files in a flat logs/ directory. These logs accumulate quickly, especially during incremental development and testing. This track aims to organize logs into session-based sub-directories and implement a heuristic-based pruning system to keep the log directory clean while preserving valuable sessions.
Functional Requirements
- Session-Based Organization:
- Logs must be stored in sub-directories within
logs/. - Sub-directory naming convention:
YYYYMMDD_HHMMSS[_Label](e.g.,20260226_143005_feature_x). - The "Label" should be included if a project or track is active at session start.
- Logs must be stored in sub-directories within
- Central Registry:
- A
logs/log_registry.tomlfile will track session metadata, including:- Session ID / Path
- Start Time
- Whitelist Status (Manual/Auto)
- Metrics (message count, errors detected, total size).
- A
- Automated Pruning Heuristic:
- Pruning triggers on application startup (
gui_2.py). - Target: Logs older than 24 hours.
- Exemption: Whitelisted logs are never auto-pruned.
- Insignificance Criteria: Non-whitelisted logs under a specific size threshold (heuristic: ~2 KB) or with zero significant interactions will be purged.
- Pruning triggers on application startup (
- Whitelisting System:
- Auto-Whitelisting: Sessions are marked as "rich" if they meet any of these:
- Complexity: > 10 messages/interactions.
- Diagnostics: Contains
ERROR,WARNING,EXCEPTION. - Major Events: User created a new project or initialized a track.
- Manual Whitelisting: The user can "star" a session via the GUI (persisted in the registry).
- Auto-Whitelisting: Sessions are marked as "rich" if they meet any of these:
Non-Functional Requirements
- Performance: Pruning and registry updates must be asynchronous or extremely fast to avoid delaying app startup.
- Safety: Ensure the pruning logic is conservative to prevent accidental data loss of important debug information.
Acceptance Criteria
- New logs are created in session-specific folders.
- The
log_registry.tomlcorrectly identifies and tracks sessions. - On startup, non-whitelisted logs older than 1 day are successfully pruned.
- Whitelisted logs (due to complexity or errors) remain untouched.
- (Bonus) The GUI displays a basic list of sessions with their "starred" status.
Out of Scope
- Migrating the entire backlog of existing flat logs (focus is on new sessions).
- Implementing a full-blown log viewer (basic metadata view only).