|
""" |
|
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 |
|
""" |
|
|
|
|
|
if log_to_file: |
|
os.makedirs('logs', exist_ok=True) |
|
|
|
|
|
root_logger = logging.getLogger() |
|
root_logger.handlers.clear() |
|
|
|
|
|
numeric_level = getattr(logging, log_level.upper(), logging.DEBUG) |
|
root_logger.setLevel(numeric_level) |
|
|
|
|
|
formatter = logging.Formatter( |
|
'%(asctime)s - %(name)s - %(levelname)s - %(funcName)s:%(lineno)d - %(message)s', |
|
datefmt='%Y-%m-%d %H:%M:%S' |
|
) |
|
|
|
handlers = [] |
|
|
|
|
|
if log_to_console: |
|
console_handler = logging.StreamHandler() |
|
console_handler.setLevel(numeric_level) |
|
console_handler.setFormatter(formatter) |
|
handlers.append(console_handler) |
|
|
|
|
|
if log_to_file: |
|
timestamp = datetime.now().strftime('%Y%m%d_%H%M%S') |
|
|
|
|
|
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_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) |
|
|
|
|
|
for handler in handlers: |
|
root_logger.addHandler(handler) |
|
|
|
|
|
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""" |
|
|
|
|
|
components = [ |
|
'auto_diffusers', |
|
'hardware_detector', |
|
'simple_memory_calculator', |
|
'gradio_app', |
|
'__main__' |
|
] |
|
|
|
for component in components: |
|
logger = logging.getLogger(component) |
|
logger.setLevel(level) |
|
|
|
logger.propagate = True |
|
|
|
|
|
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()}") |
|
|
|
|
|
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__": |
|
|
|
setup_debug_logging(log_level='DEBUG') |
|
log_system_info() |
|
|
|
|
|
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() |