- Created migration to set up app_log table for storing application logs. - Added AppLog entity and repository for ORM handling of logs. - Developed DbLogger service to persist logs of level WARNING and above to the database while maintaining existing logging behavior. - Implemented tests for admin log retrieval and DbLogger functionality to ensure proper logging behavior. - Enhanced logging context sanitization for better error tracking.
1 line
11 KiB
JSON
1 line
11 KiB
JSON
{"nodes": [{"id": "users_hamed_pj_my_pj_clinic_pro_clinicpro_claude_prompt_project_wide_logging_md", "label": "project-wide-logging.md", "file_type": "document", "source_file": ".claude/prompt/project-wide-logging.md", "source_location": "L1"}, {"id": "prompt_project_wide_logging_\u0644\u0627\u06af\u06cc\u0646\u06af_\u0633\u0631\u0627\u0633\u0631\u06cc_\u067e\u0631\u0648\u0698\u0647_\u0646\u0645\u0627\u06cc\u0634_\u0644\u0627\u06af_\u0647\u0627_\u062f\u0631_\u067e\u0646\u0644_\u0627\u062f\u0645\u06cc\u0646", "label": "\u0644\u0627\u06af\u06cc\u0646\u06af \u0633\u0631\u0627\u0633\u0631\u06cc \u067e\u0631\u0648\u0698\u0647 + \u0646\u0645\u0627\u06cc\u0634 \u0644\u0627\u06af\u200c\u0647\u0627 \u062f\u0631 \u067e\u0646\u0644 \u0627\u062f\u0645\u06cc\u0646", "file_type": "document", "source_file": ".claude/prompt/project-wide-logging.md", "source_location": "L1"}, {"id": "prompt_project_wide_logging_\u067e\u0631\u0648\u0698\u0647", "label": "\u067e\u0631\u0648\u0698\u0647", "file_type": "document", "source_file": ".claude/prompt/project-wide-logging.md", "source_location": "L3"}, {"id": "prompt_project_wide_logging_\u0632\u0645\u06cc\u0646\u0647", "label": "\u0632\u0645\u06cc\u0646\u0647", "file_type": "document", "source_file": ".claude/prompt/project-wide-logging.md", "source_location": "L7"}, {"id": "prompt_project_wide_logging_\u0647\u062f\u0641", "label": "\u0647\u062f\u0641", "file_type": "document", "source_file": ".claude/prompt/project-wide-logging.md", "source_location": "L31"}, {"id": "prompt_project_wide_logging_\u0641\u0627\u06cc\u0644_\u0647\u0627\u06cc_\u0645\u0631\u062a\u0628\u0637", "label": "\u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u0645\u0631\u062a\u0628\u0637", "file_type": "document", "source_file": ".claude/prompt/project-wide-logging.md", "source_location": "L37"}, {"id": "prompt_project_wide_logging_\u0648\u0636\u0639\u06cc\u062a_\u0641\u0639\u0644\u06cc_\u0646\u0645\u0648\u0646\u0647_catch_\u0628\u06cc_\u0635\u062f\u0627", "label": "\u0648\u0636\u0639\u06cc\u062a \u0641\u0639\u0644\u06cc (\u0646\u0645\u0648\u0646\u0647 catch \u0628\u06cc\u200c\u0635\u062f\u0627)", "file_type": "document", "source_file": ".claude/prompt/project-wide-logging.md", "source_location": "L56"}, {"id": "prompt_project_wide_logging_\u0648\u0638\u0627\u06cc\u0641", "label": "\u0648\u0638\u0627\u06cc\u0641", "file_type": "document", "source_file": ".claude/prompt/project-wide-logging.md", "source_location": "L72"}, {"id": "prompt_project_wide_logging_\u06f1_\u0633\u0627\u062e\u062a_entity_\u062c\u062f\u0648\u0644_\u0644\u0627\u06af_src_shared_logging_applog_php", "label": "\u06f1. \u0633\u0627\u062e\u062a Entity \u062c\u062f\u0648\u0644 \u0644\u0627\u06af \u2014 `src/Shared/Logging/AppLog.php`", "file_type": "document", "source_file": ".claude/prompt/project-wide-logging.md", "source_location": "L74"}, {"id": "prompt_project_wide_logging_\u06f2_decorator_\u0644\u0627\u06af\u0631_src_shared_logging_dblogger_php", "label": "\u06f2. Decorator \u0644\u0627\u06af\u0631 \u2014 `src/Shared/Logging/DbLogger.php`", "file_type": "document", "source_file": ".claude/prompt/project-wide-logging.md", "source_location": "L90"}, {"id": "prompt_project_wide_logging_\u06f3_\u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f_\u0644\u0627\u06af_\u062f\u0631_\u0646\u0642\u0627\u0637_\u0645\u0647\u0645_\u06a9\u0644_backend", "label": "\u06f3. \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f\u0650 \u0644\u0627\u06af \u062f\u0631 \u0646\u0642\u0627\u0637 \u0645\u0647\u0645 (\u06a9\u0644 backend)", "file_type": "document", "source_file": ".claude/prompt/project-wide-logging.md", "source_location": "L162"}, {"id": "prompt_project_wide_logging_\u06f4_endpoint_\u0627\u062f\u0645\u06cc\u0646_get_api_v1_admin_logs", "label": "\u06f4. Endpoint \u0627\u062f\u0645\u06cc\u0646 \u2014 `GET /api/v1/admin/logs`", "file_type": "document", "source_file": ".claude/prompt/project-wide-logging.md", "source_location": "L182"}, {"id": "prompt_project_wide_logging_\u06f5_\u0635\u0641\u062d\u0647_\u06cc_\u0627\u062f\u0645\u06cc\u0646_assets_admin_pages_logspage_tsx", "label": "\u06f5. \u0635\u0641\u062d\u0647\u200c\u06cc \u0627\u062f\u0645\u06cc\u0646 \u2014 `assets/admin/pages/LogsPage.tsx`", "file_type": "document", "source_file": ".claude/prompt/project-wide-logging.md", "source_location": "L203"}, {"id": "prompt_project_wide_logging_\u06f6_\u0645\u0633\u062a\u0646\u062f\u0627\u062a", "label": "\u06f6. \u0645\u0633\u062a\u0646\u062f\u0627\u062a", "file_type": "document", "source_file": ".claude/prompt/project-wide-logging.md", "source_location": "L214"}, {"id": "prompt_project_wide_logging_\u0646\u06a9\u0627\u062a_\u0645\u0647\u0645", "label": "\u0646\u06a9\u0627\u062a \u0645\u0647\u0645", "file_type": "document", "source_file": ".claude/prompt/project-wide-logging.md", "source_location": "L218"}], "edges": [{"source": "users_hamed_pj_my_pj_clinic_pro_clinicpro_claude_prompt_project_wide_logging_md", "target": "prompt_project_wide_logging_\u0644\u0627\u06af\u06cc\u0646\u06af_\u0633\u0631\u0627\u0633\u0631\u06cc_\u067e\u0631\u0648\u0698\u0647_\u0646\u0645\u0627\u06cc\u0634_\u0644\u0627\u06af_\u0647\u0627_\u062f\u0631_\u067e\u0646\u0644_\u0627\u062f\u0645\u06cc\u0646", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/project-wide-logging.md", "source_location": "L1", "weight": 1.0}, {"source": "prompt_project_wide_logging_\u0644\u0627\u06af\u06cc\u0646\u06af_\u0633\u0631\u0627\u0633\u0631\u06cc_\u067e\u0631\u0648\u0698\u0647_\u0646\u0645\u0627\u06cc\u0634_\u0644\u0627\u06af_\u0647\u0627_\u062f\u0631_\u067e\u0646\u0644_\u0627\u062f\u0645\u06cc\u0646", "target": "prompt_project_wide_logging_\u067e\u0631\u0648\u0698\u0647", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/project-wide-logging.md", "source_location": "L3", "weight": 1.0}, {"source": "prompt_project_wide_logging_\u0644\u0627\u06af\u06cc\u0646\u06af_\u0633\u0631\u0627\u0633\u0631\u06cc_\u067e\u0631\u0648\u0698\u0647_\u0646\u0645\u0627\u06cc\u0634_\u0644\u0627\u06af_\u0647\u0627_\u062f\u0631_\u067e\u0646\u0644_\u0627\u062f\u0645\u06cc\u0646", "target": "prompt_project_wide_logging_\u0632\u0645\u06cc\u0646\u0647", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/project-wide-logging.md", "source_location": "L7", "weight": 1.0}, {"source": "prompt_project_wide_logging_\u0644\u0627\u06af\u06cc\u0646\u06af_\u0633\u0631\u0627\u0633\u0631\u06cc_\u067e\u0631\u0648\u0698\u0647_\u0646\u0645\u0627\u06cc\u0634_\u0644\u0627\u06af_\u0647\u0627_\u062f\u0631_\u067e\u0646\u0644_\u0627\u062f\u0645\u06cc\u0646", "target": "prompt_project_wide_logging_\u0647\u062f\u0641", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/project-wide-logging.md", "source_location": "L31", "weight": 1.0}, {"source": "prompt_project_wide_logging_\u0644\u0627\u06af\u06cc\u0646\u06af_\u0633\u0631\u0627\u0633\u0631\u06cc_\u067e\u0631\u0648\u0698\u0647_\u0646\u0645\u0627\u06cc\u0634_\u0644\u0627\u06af_\u0647\u0627_\u062f\u0631_\u067e\u0646\u0644_\u0627\u062f\u0645\u06cc\u0646", "target": "prompt_project_wide_logging_\u0641\u0627\u06cc\u0644_\u0647\u0627\u06cc_\u0645\u0631\u062a\u0628\u0637", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/project-wide-logging.md", "source_location": "L37", "weight": 1.0}, {"source": "prompt_project_wide_logging_\u0644\u0627\u06af\u06cc\u0646\u06af_\u0633\u0631\u0627\u0633\u0631\u06cc_\u067e\u0631\u0648\u0698\u0647_\u0646\u0645\u0627\u06cc\u0634_\u0644\u0627\u06af_\u0647\u0627_\u062f\u0631_\u067e\u0646\u0644_\u0627\u062f\u0645\u06cc\u0646", "target": "prompt_project_wide_logging_\u0648\u0636\u0639\u06cc\u062a_\u0641\u0639\u0644\u06cc_\u0646\u0645\u0648\u0646\u0647_catch_\u0628\u06cc_\u0635\u062f\u0627", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/project-wide-logging.md", "source_location": "L56", "weight": 1.0}, {"source": "prompt_project_wide_logging_\u0644\u0627\u06af\u06cc\u0646\u06af_\u0633\u0631\u0627\u0633\u0631\u06cc_\u067e\u0631\u0648\u0698\u0647_\u0646\u0645\u0627\u06cc\u0634_\u0644\u0627\u06af_\u0647\u0627_\u062f\u0631_\u067e\u0646\u0644_\u0627\u062f\u0645\u06cc\u0646", "target": "prompt_project_wide_logging_\u0648\u0638\u0627\u06cc\u0641", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/project-wide-logging.md", "source_location": "L72", "weight": 1.0}, {"source": "prompt_project_wide_logging_\u0648\u0638\u0627\u06cc\u0641", "target": "prompt_project_wide_logging_\u06f1_\u0633\u0627\u062e\u062a_entity_\u062c\u062f\u0648\u0644_\u0644\u0627\u06af_src_shared_logging_applog_php", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/project-wide-logging.md", "source_location": "L74", "weight": 1.0}, {"source": "prompt_project_wide_logging_\u0648\u0638\u0627\u06cc\u0641", "target": "prompt_project_wide_logging_\u06f2_decorator_\u0644\u0627\u06af\u0631_src_shared_logging_dblogger_php", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/project-wide-logging.md", "source_location": "L90", "weight": 1.0}, {"source": "prompt_project_wide_logging_\u0648\u0638\u0627\u06cc\u0641", "target": "prompt_project_wide_logging_\u06f3_\u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f_\u0644\u0627\u06af_\u062f\u0631_\u0646\u0642\u0627\u0637_\u0645\u0647\u0645_\u06a9\u0644_backend", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/project-wide-logging.md", "source_location": "L162", "weight": 1.0}, {"source": "prompt_project_wide_logging_\u0648\u0638\u0627\u06cc\u0641", "target": "prompt_project_wide_logging_\u06f4_endpoint_\u0627\u062f\u0645\u06cc\u0646_get_api_v1_admin_logs", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/project-wide-logging.md", "source_location": "L182", "weight": 1.0}, {"source": "prompt_project_wide_logging_\u0648\u0638\u0627\u06cc\u0641", "target": "prompt_project_wide_logging_\u06f5_\u0635\u0641\u062d\u0647_\u06cc_\u0627\u062f\u0645\u06cc\u0646_assets_admin_pages_logspage_tsx", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/project-wide-logging.md", "source_location": "L203", "weight": 1.0}, {"source": "prompt_project_wide_logging_\u0648\u0638\u0627\u06cc\u0641", "target": "prompt_project_wide_logging_\u06f6_\u0645\u0633\u062a\u0646\u062f\u0627\u062a", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/project-wide-logging.md", "source_location": "L214", "weight": 1.0}, {"source": "prompt_project_wide_logging_\u0644\u0627\u06af\u06cc\u0646\u06af_\u0633\u0631\u0627\u0633\u0631\u06cc_\u067e\u0631\u0648\u0698\u0647_\u0646\u0645\u0627\u06cc\u0634_\u0644\u0627\u06af_\u0647\u0627_\u062f\u0631_\u067e\u0646\u0644_\u0627\u062f\u0645\u06cc\u0646", "target": "prompt_project_wide_logging_\u0646\u06a9\u0627\u062a_\u0645\u0647\u0645", "relation": "contains", "confidence": "EXTRACTED", "source_file": ".claude/prompt/project-wide-logging.md", "source_location": "L218", "weight": 1.0}], "input_tokens": 0, "output_tokens": 0} |