embedding-server / app /logger.py
Faysal4200's picture
Upload 45 files
ec855e6 verified
Raw
History Blame Contribute Delete
1.63 kB
# 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")