Spaces:
Running
Running
File size: 2,411 Bytes
c262d1a |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
#!/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
@contextmanager
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") |