File size: 1,171 Bytes
ad8032f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
# RockPaperScissor/utils/logging.py
import logging
import sys

# Store the logger instance to prevent re-creation/multiple handlers
_logger_instance = None

def setup_logging(log_level_str: str = "INFO") -> logging.Logger:
    global _logger_instance
    if _logger_instance is None:
        logger = logging.getLogger("RPS_Gradio_App")
        logger.propagate = False # Prevent Gunicorn/Uvicorn from duplicating root logger's messages
        
        # Remove existing handlers if any (e.g., from previous calls or other libs)
        if logger.hasHandlers():
            logger.handlers.clear()

        log_level = getattr(logging, log_level_str.upper(), logging.INFO)
        logger.setLevel(log_level)

        handler = logging.StreamHandler(sys.stdout) # Log to stdout for HF Spaces
        formatter = logging.Formatter(
            '%(asctime)s - %(name)s - %(levelname)s - [%(filename)s:%(lineno)d] - %(message)s'
        )
        handler.setFormatter(formatter)
        logger.addHandler(handler)
        _logger_instance = logger
        print(f"Logger '{logger.name}' configured with level {log_level_str} and stream handler.")
    return _logger_instance