Hamza4100's picture
Upload 23 files
aa8e38b verified
"""
Logging utility module for consistent logging across the application.
"""
import sys
from pathlib import Path
from loguru import logger
from app.config import settings
def setup_logging() -> None:
"""Configure application logging with loguru."""
# Remove default handler
logger.remove()
# Console handler
logger.add(
sys.stderr,
format="<green>{time:YYYY-MM-DD HH:mm:ss}</green> | <level>{level: <8}</level> | <cyan>{name}</cyan>:<cyan>{function}</cyan>:<cyan>{line}</cyan> - <level>{message}</level>",
level="DEBUG" if settings.debug else "INFO",
colorize=True,
)
# File handler
log_file = settings.base_dir / "logs" / "app.log"
log_file.parent.mkdir(parents=True, exist_ok=True)
logger.add(
log_file,
format="{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {name}:{function}:{line} - {message}",
level="DEBUG",
rotation="10 MB",
retention="7 days",
compression="zip",
)
def get_logger(name: str):
"""Get a logger instance with the given name."""
return logger.bind(name=name)