The Hashmire/Analysis_Tools implements a comprehensive, standardized logging and reporting system designed to provide consistent terminology, formatting, and severity assignments across all components. This system has been thoroughly tested with a comprehensive 53-test suite that validates all aspects of logging functionality and ensures reliable, professional-grade logging for all tool operations.
All logging messages use standardized terminology to ensure clarity and professional presentation:
All message types follow consistent formatting patterns for easy parsing and professional appearance.
Log levels are assigned based on clear criteria to ensure consistent importance classification.
Messages are organized into logical groups for better filtering and analysis.
The system covers all possible operational scenarios including normal operations, error conditions, edge cases, and performance scenarios.
✅ Correct | ❌ Avoid | Context |
---|---|---|
CPE names | CPE products, CPE items | API result references |
CVE records | CVE entries, CVE items, CVE data | Database/API references |
CPE match strings | CPE strings, CPE queries | Query operations |
CPE base strings | CPE bases, base CPEs | Generated search strings |
source entries | source data, sources | NVD source information |
Operation Type | Standard Terms | Examples |
---|---|---|
Data Collection | gathering, collecting, retrieved, found | “Gathering NVD source entries”, “Retrieved 100 CVE records” |
Data Processing | processing, completed, generated | “Processing CPE queries”, “Generated HTML output” |
Progress Updates | Processing X: current/total (percentage) | “Processing CVE queries: 25/100 (25.0%)” |
Completion Status | completed, processed successfully, generated | “CPE queries completed”, “Dataset generated successfully” |
API | Standard Reference |
---|---|
National Vulnerability Database CVE API | “NVD CVE API” |
MITRE CVE Services API | “MITRE CVE API” |
National Vulnerability Database CPE API | “NVD CPE API” |
NVD Sources API | “NVD Sources API” |
Standard Pattern:
Processing {operation}: {current}/{total} ({percentage:.1f}%) - {context_info}
Examples:
Processing CVE queries: 25/100 (25.0%) - 25 CVE records collected so far
Processing CPE dataset generation: 150/500 (30.0%) - Collecting page data
Processing CVE collection completed: 1000/1000 (100.0%) - All records processed
Key Requirements:
Standard Pattern:
{Component} {operation} failed: {specific_reason} - {context}
Examples:
NVD CVE API request failed: Unable to fetch CVE record for CVE-2024-1234 - Connection timeout
Dataset generation failed: Maximum retry attempts (5) reached for current page - stopping data collection
HTML conversion failed: Unable to convert CPE query data to HTML at table index 2 - Invalid data format
Key Requirements:
API Call Pattern:
{API_NAME} call: {operation_description}
API Response Pattern:
{API_NAME} response: {status} [- {additional_info}]
Examples:
NVD CVE API call: Requesting CVE record for CVE-2024-1234
MITRE CVE API response: Success - CVE record retrieved
NVD CPE API response: Error - Invalid CPE match string parameter
Standard Pattern:
{Operation} {file_type}: {file_path}
Enhanced Pattern (with size information):
File Generated: {file_name} (Size: {size} {unit})
Examples:
Generated HTML file: /path/to/output/CVE-2024-1234.html
File Generated: CVE-2024-1234.html (Size: 42.5 KB)
Created dataset file: /path/to/datasets/cve_list.txt
Loaded configuration file: /path/to/config/config.json
Use For:
Examples:
logger.info("Processing 100 CVE records (newest first)...", group="initialization")
logger.info("CVE data retrieved successfully", group="cve_queries")
logger.info("Processing CPE queries completed: 50 CPE match strings processed", group="cpe_queries")
logger.info("Dataset generated successfully!", group="initialization")
Use For:
Examples:
logger.debug("Current public IP address: 192.168.1.100", group="cve_queries")
logger.debug("Collected 150 of 500 CPE names...", group="cpe_queries")
logger.debug("Error type: RequestException", group="cve_queries")
logger.debug("Platform data serialization completed", group="data_processing")
Use For:
Examples:
logger.warning("Waiting 5 seconds before retry...", group="cve_queries")
logger.warning("Invalid CPE match string detected, skipping: cpe:*:*", group="cpe_queries")
logger.warning("Confirmed mappings failed for CVE-2024-1234: Unable to process confirmed mappings", group="badge_gen")
Use For:
Examples:
logger.error("NVD CVE API request failed: Maximum retry attempts (3) reached for CVE CVE-2024-1234", group="cve_queries")
logger.error("Dataset file creation failed: Unable to write dataset output to 'output.txt' - Permission denied", group="initialization")
logger.error("CVE processing failed for CVE-2024-1234: Unable to complete analysis workflow - Critical error", group="page_generation")
Group | Purpose | Typical Messages |
---|---|---|
initialization |
Application startup and configuration | Configuration loading, initial setup, command-line processing |
cve_queries |
CVE data collection and API calls | CVE API requests/responses, data retrieval, collection progress |
cpe_queries |
CPE data collection and API calls | CPE API requests/responses, dictionary queries, CPE processing |
unique_cpe |
CPE generation and base string creation | CPE base string generation, uniqueness processing |
data_processing |
Data transformation and validation | Data parsing, validation, transformation operations |
badge_gen |
UI badge and metadata creation | Badge generation, metadata processing, confirmed mappings |
page_generation |
HTML and output file creation | HTML generation, file creation, template processing |
Note: All error messages are assigned to the appropriate workflow stage group where the error occurred (e.g., errors during CPE queries use the cpe_queries
group, initialization errors use the initialization
group).
Single Group Per Message:
# ✅ Correct - One specific group
logger.info("Processing CVE queries completed", group="cve_queries")
# ❌ Avoid - Multiple or generic groups
logger.info("Processing CVE queries completed", group="general")
Context-Appropriate Grouping:
# ✅ Correct - Error assigned to appropriate workflow group
logger.error("NVD CPE API request failed: Connection timeout", group="cpe_queries")
# ✅ Correct - Initialization error goes to init group
logger.error("Configuration file not found", group="initialization")
Method: logger.data_summary(operation, group, **kwargs)
Purpose: Log structured data summaries with key-value pairs
Usage:
logger.data_summary("CPE Generation Results", group="unique_cpe",
**{"Affected Array Entries Processed": 25,
"Unique Match Strings Identified": 10})
Method: logger.api_call(api_name, params, group)
Purpose: Log outgoing API requests with parameters
Usage:
logger.api_call("NVD CVE API", {"cve_id": "CVE-2024-1234"}, group="cve_queries")
Method: logger.api_response(api_name, status, group)
Purpose: Log API response status and results
Usage:
logger.api_response("MITRE CVE API", "Success", group="cve_queries")
logger.api_response("NVD CPE API", "Error - Invalid parameter", group="cpe_queries")
Method: logger.file_operation(operation, file_path, group)
Purpose: Log file system operations
Usage:
logger.file_operation("Generated", "/path/to/output.html", group="page_generation")
logger.file_operation("Loaded", "/path/to/config.json", group="initialization")
The logging system includes comprehensive file logging capabilities that automatically save all terminal output to dated log files for audit trails and analysis.
logs/
directory2025.06.25_CVE-2024-1234.log
)Log files follow the pattern: YYYY.MM.DD_<parameter>.log
Examples:
2025.06.25_CVE-2024-1234.log
2025.06.25_testExamples.log
2025.06.25_custom_dataset.log
File logging is automatically enabled for all analysis runs:
# File logging starts automatically in main()
logger.start_file_logging(run_parameters)
# ... all logging during execution is captured ...
# File logging stops automatically on exit
logger.stop_file_logging()
Each log file contains:
# ==================================================
# Analysis Tool Log File
# Started: 2025-06-25 14:29:01
# Parameters: testExamples
# ==================================================
[2025-06-25 14:29:01] [INFO] Starting analysis...
[2025-06-25 14:29:02] [INFO] Processing CVE queries: 1/12 (8.3%)
...
[2025-06-25 14:29:03] [INFO] Analysis completed successfully
# ==================================================
# Completed: 2025-06-25 14:29:03
# End of log
File logging is controlled by the workflow logger and doesn’t require additional configuration. Log files are automatically:
logs/
directory (project root)def process_cve_data(cve_id):
"""Example function showing proper logging implementation."""
# INFO: Workflow progress
logger.info(f"Processing CVE analysis for {cve_id}", group="initialization")
try:
# DEBUG: Technical details
logger.debug(f"Validating CVE ID format: {cve_id}", group="data_processing")
# API call logging
logger.api_call("NVD CVE API", {"cve_id": cve_id}, group="cve_queries")
# Simulate API call
response = fetch_cve_data(cve_id)
# API response logging
logger.api_response("NVD CVE API", "Success", group="cve_queries")
# INFO: Successful completion
logger.info(f"CVE data processing completed for {cve_id}", group="cve_queries")
return response
except InvalidCVEError as e:
# WARNING: Recoverable issue
logger.warning(f"Invalid CVE ID detected, skipping: {cve_id}", group="cve_queries")
return None
except APIError as e:
# ERROR: Critical failure - assign to appropriate workflow group
logger.error(f"NVD CVE API request failed: Unable to fetch CVE record for {cve_id} - {str(e)}", group="cve_queries")
raise
The logging system includes extensive automated testing that validates every aspect of logging behavior:
1. Terminology Standardization Tests (4 tests)
2. Format Compliance Tests (4 tests)
3. Log Level Appropriateness Tests (4 tests)
4. Log Group Organization Tests (17 tests)
5. Audit Boundary Enforcement Tests (24 tests)
# Run complete consolidated test suite (53 test cases)
python test_files/test_logging_system.py
# Includes all test categories:
# - Terminology standardization (4 tests)
# - Format compliance (4 tests)
# - Log level appropriateness (4 tests)
# - Group organization (17 tests)
# - Audit boundary enforcement (24 tests)
# Run all logging tests via master runner
python test_files/run_all_logging_tests.py
# Executes the complete consolidated test suite
# Provides comprehensive validation with 100% success rate
# Sub-second execution time for rapid development feedback
Correct | Avoid | Context |
---|---|---|
CVE records | entries, items, data | API/database references |
CPE names | products, items | API result references |
CPE match strings | query strings | Query operations |
CPE base strings | generated search strings | Generated search strings |
gathering, collecting, processing | other variants | Operations |
Progress Messages:
Processing {operation}: {current}/{total} ({percentage:.1f}%) - {context}
Error Messages:
{Component} {operation} failed: {specific_reason} - {context}
API Calls:
{API_NAME} call: {operation_description}
{API_NAME} response: {status}
Level | Use For | Examples |
---|---|---|
INFO | Progress, completion | "Processing 100 CVE records..." |
DEBUG | Diagnostics | "Current IP: 192.168.1.1" |
WARNING | Recoverable issues | "Retrying after rate limit" |
ERROR | Critical failures | "API request failed: Max retries" |
Group | Purpose |
---|---|
initialization |
Startup, config, command-line |
cve_queries |
CVE API calls, data collection |
cpe_queries |
CPE API calls, dictionary queries |
unique_cpe |
CPE generation, base strings |
data_processing |
Data transformation, validation |
badge_gen |
UI badges, metadata, mappings |
page_generation |
HTML generation, file creation |
Note: Error messages should be assigned to the appropriate workflow stage group where the error occurred.
The system enforces strict audit boundaries:
Proper Workflow Boundaries:
# ✅ Contained within stage boundaries
logger.stage_start("CVE Data Collection", group="cve_queries")
logger.info("Starting CVE API queries", group="cve_queries")
logger.api_call("NVD CVE API", params, group="cve_queries")
logger.stage_end("CVE Data Collection", group="cve_queries")
# ✅ Correct Progress Logging
logger.info("Processing CVE queries: 25/100 (25.0%) - 25 CVE records collected", group="cve_queries")
# ✅ Correct Error Logging
logger.error("NVD CVE API request failed: Connection timeout - CVE-2024-1234", group="cve_queries")
# ✅ Correct API Logging
logger.api_call("NVD CPE API", {"cpe_match": "cpe:2.3:*:apache:*"}, group="cpe_queries")
logger.api_response("MITRE CVE API", "Success", group="cve_queries")
# ✅ Correct File Operations
logger.file_operation("Generated", "/path/to/CVE-2024-1234.html", group="page_generation")
The test suite validates:
When adding new logging code, verify:
When extending the system:
When adding new components that require logging:
Last Updated: June 2025
Version: 1.0 (Current Standardized System)
Compatibility: Analysis Tool v2.0+