Spaces:
Running
Running
#!/usr/bin/env python3 | |
""" | |
Test logging utilities for GAIA test system | |
""" | |
import logging | |
import os | |
import sys | |
from contextlib import contextmanager | |
from datetime import datetime | |
from pathlib import Path | |
def test_logger(test_type: str, test_id: str = None): | |
""" | |
Context manager for test logging | |
Args: | |
test_type: Type of test being run | |
test_id: Optional test identifier | |
""" | |
# Create log directory if it doesn't exist | |
log_dir = Path("test_logs") | |
log_dir.mkdir(exist_ok=True) | |
# Generate log filename | |
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S") | |
if test_id: | |
log_file = log_dir / f"{test_type}_{test_id}_{timestamp}.log" | |
else: | |
log_file = log_dir / f"{test_type}_{timestamp}.log" | |
# Setup logger | |
logger = logging.getLogger(f"test_{test_type}") | |
logger.setLevel(logging.INFO) | |
# Clear existing handlers | |
logger.handlers.clear() | |
# File handler | |
file_handler = logging.FileHandler(log_file) | |
file_handler.setLevel(logging.INFO) | |
# Console handler | |
console_handler = logging.StreamHandler(sys.stdout) | |
console_handler.setLevel(logging.INFO) | |
# Formatter | |
formatter = logging.Formatter( | |
'%(asctime)s - %(name)s - %(levelname)s - %(message)s' | |
) | |
file_handler.setFormatter(formatter) | |
console_handler.setFormatter(formatter) | |
# Add handlers | |
logger.addHandler(file_handler) | |
logger.addHandler(console_handler) | |
try: | |
logger.info(f"Starting {test_type} test" + (f" for {test_id}" if test_id else "")) | |
yield logger | |
logger.info(f"Completed {test_type} test" + (f" for {test_id}" if test_id else "")) | |
except Exception as e: | |
logger.error(f"Test failed: {e}") | |
raise | |
finally: | |
# Clean up handlers | |
logger.handlers.clear() | |
def setup_test_logging(): | |
"""Setup basic test logging configuration""" | |
logging.basicConfig( | |
level=logging.INFO, | |
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', | |
handlers=[ | |
logging.StreamHandler(sys.stdout) | |
] | |
) | |
if __name__ == "__main__": | |
# Test the logging utility | |
with test_logger("sample", "test123") as logger: | |
logger.info("This is a test log message") | |
logger.warning("This is a warning") | |
logger.error("This is an error") |