Spaces:
Running
Running
""" | |
Debug configuration for Auto Diffusers Config | |
Provides centralized logging setup for the entire application | |
""" | |
import logging | |
import os | |
from datetime import datetime | |
def setup_debug_logging(log_level='DEBUG', log_to_file=True, log_to_console=True): | |
""" | |
Set up comprehensive debug logging for the entire application | |
Args: | |
log_level (str): Logging level ('DEBUG', 'INFO', 'WARNING', 'ERROR') | |
log_to_file (bool): Whether to log to files | |
log_to_console (bool): Whether to log to console | |
""" | |
# Create logs directory if it doesn't exist | |
if log_to_file: | |
os.makedirs('logs', exist_ok=True) | |
# Clear any existing handlers | |
root_logger = logging.getLogger() | |
root_logger.handlers.clear() | |
# Set root logging level | |
numeric_level = getattr(logging, log_level.upper(), logging.DEBUG) | |
root_logger.setLevel(numeric_level) | |
# Create formatter | |
formatter = logging.Formatter( | |
'%(asctime)s - %(name)s - %(levelname)s - %(funcName)s:%(lineno)d - %(message)s', | |
datefmt='%Y-%m-%d %H:%M:%S' | |
) | |
handlers = [] | |
# Console handler | |
if log_to_console: | |
console_handler = logging.StreamHandler() | |
console_handler.setLevel(numeric_level) | |
console_handler.setFormatter(formatter) | |
handlers.append(console_handler) | |
# File handlers | |
if log_to_file: | |
timestamp = datetime.now().strftime('%Y%m%d_%H%M%S') | |
# Main application log | |
main_log_file = f'logs/auto_diffusers_{timestamp}.log' | |
file_handler = logging.FileHandler(main_log_file) | |
file_handler.setLevel(numeric_level) | |
file_handler.setFormatter(formatter) | |
handlers.append(file_handler) | |
# Error-only log | |
error_log_file = f'logs/errors_{timestamp}.log' | |
error_handler = logging.FileHandler(error_log_file) | |
error_handler.setLevel(logging.ERROR) | |
error_handler.setFormatter(formatter) | |
handlers.append(error_handler) | |
# Add all handlers to root logger | |
for handler in handlers: | |
root_logger.addHandler(handler) | |
# Set up specific logger configurations | |
configure_component_loggers(numeric_level) | |
logging.info("=" * 80) | |
logging.info("AUTO DIFFUSERS CONFIG - DEBUG SESSION STARTED") | |
logging.info("=" * 80) | |
logging.info(f"Log level: {log_level}") | |
logging.info(f"Logging to console: {log_to_console}") | |
logging.info(f"Logging to file: {log_to_file}") | |
if log_to_file: | |
logging.info(f"Main log file: {main_log_file}") | |
logging.info(f"Error log file: {error_log_file}") | |
logging.info("=" * 80) | |
def configure_component_loggers(level): | |
"""Configure logging for individual components""" | |
# Main application components | |
components = [ | |
'auto_diffusers', | |
'hardware_detector', | |
'simple_memory_calculator', | |
'gradio_app', | |
'__main__' | |
] | |
for component in components: | |
logger = logging.getLogger(component) | |
logger.setLevel(level) | |
# Don't propagate to avoid duplicate messages | |
logger.propagate = True | |
# Third-party library logging (reduce verbosity) | |
third_party_loggers = { | |
'urllib3': logging.WARNING, | |
'requests': logging.WARNING, | |
'httpx': logging.WARNING, | |
'gradio': logging.INFO, | |
'google': logging.INFO, | |
'huggingface_hub': logging.INFO | |
} | |
for lib_name, lib_level in third_party_loggers.items(): | |
lib_logger = logging.getLogger(lib_name) | |
lib_logger.setLevel(lib_level) | |
def log_system_info(): | |
"""Log comprehensive system information at startup""" | |
import platform | |
import sys | |
import os | |
logger = logging.getLogger(__name__) | |
logger.info("SYSTEM INFORMATION:") | |
logger.info(f" Platform: {platform.system()} {platform.release()}") | |
logger.info(f" Architecture: {platform.machine()}") | |
logger.info(f" Python: {sys.version}") | |
logger.info(f" Working directory: {os.getcwd()}") | |
logger.info(f" Process ID: {os.getpid()}") | |
# Environment variables (non-sensitive) | |
env_vars = ['GOOGLE_API_KEY', 'CUDA_VISIBLE_DEVICES', 'PYTORCH_CUDA_ALLOC_CONF'] | |
logger.info("ENVIRONMENT VARIABLES:") | |
for var in env_vars: | |
value = os.getenv(var, 'Not set') | |
if var == 'GOOGLE_API_KEY' and value != 'Not set': | |
value = f"Set (length: {len(value)})" | |
logger.info(f" {var}: {value}") | |
def log_session_end(): | |
"""Log session end information""" | |
logger = logging.getLogger(__name__) | |
logger.info("=" * 80) | |
logger.info("AUTO DIFFUSERS CONFIG - DEBUG SESSION ENDED") | |
logger.info("=" * 80) | |
if __name__ == "__main__": | |
# Example usage | |
setup_debug_logging(log_level='DEBUG') | |
log_system_info() | |
# Test logging from different components | |
logger = logging.getLogger(__name__) | |
logger.debug("This is a debug message") | |
logger.info("This is an info message") | |
logger.warning("This is a warning message") | |
logger.error("This is an error message") | |
log_session_end() |