auto-diffuser-config / debug_config.py
chansung's picture
Upload folder using huggingface_hub
aae35f1 verified
raw
history blame
5.16 kB
"""
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()