Spaces:
Sleeping
Sleeping
File size: 1,625 Bytes
ec855e6 | 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 | # app/logger.py
"""
Structured, colorized logger used across the app.
- Uses colorlog to add color to log levels in console.
- Central logger configuration prevents duplicate handlers.
"""
import logging
import sys
from typing import Optional
import colorlog
from .config import settings
def get_logger(name: Optional[str] = None) -> logging.Logger:
logger = logging.getLogger(name)
if logger.handlers:
# already configured
return logger
# Get level from settings or default to INFO
log_level_str = settings.LOG_LEVEL.upper()
level = getattr(logging, log_level_str, logging.INFO)
# Console Handler with Color
handler = colorlog.StreamHandler(stream=sys.stdout)
handler.setLevel(level)
# Enhanced Formatter with better spacing and colors
formatter = colorlog.ColoredFormatter(
"%(log_color)s%(levelname)-8s%(reset)s | %(log_color)s%(asctime)s%(reset)s | %(cyan)s%(name)s%(reset)s | %(message)s",
datefmt="%H:%M:%S",
log_colors={
"DEBUG": "blue",
"INFO": "green",
"WARNING": "yellow",
"ERROR": "bold_red",
"CRITICAL": "bold_red,bg_white",
},
secondary_log_colors={
"message": {
"ERROR": "red",
"CRITICAL": "red",
}
},
style="%"
)
handler.setFormatter(formatter)
logger.setLevel(level)
logger.addHandler(handler)
logger.propagate = False
return logger
# Global app logger
logger = get_logger("bge-server")
|