44 lines
1.2 KiB
Python
44 lines
1.2 KiB
Python
# app/core/logging.py
|
|
import logging
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
from app.core.config import settings
|
|
|
|
|
|
def setup_logging():
|
|
"""Configure application logging with file and console handlers"""
|
|
|
|
# Create logs directory if it doesn't exist
|
|
log_file = Path(settings.log_file)
|
|
log_file.parent.mkdir(parents=True, exist_ok=True)
|
|
|
|
# Configure root logger
|
|
logger = logging.getLogger()
|
|
logger.setLevel(getattr(logging, settings.log_level.upper()))
|
|
|
|
# Remove existing handlers
|
|
for handler in logger.handlers[:]:
|
|
logger.removeHandler(handler)
|
|
|
|
# Create formatters
|
|
formatter = logging.Formatter(
|
|
"%(asctime)s - %(name)s - %(levelname)s - %(message)s"
|
|
)
|
|
|
|
# Console handler
|
|
console_handler = logging.StreamHandler(sys.stdout)
|
|
console_handler.setFormatter(formatter)
|
|
logger.addHandler(console_handler)
|
|
|
|
# File handler
|
|
file_handler = logging.FileHandler(log_file)
|
|
file_handler.setFormatter(formatter)
|
|
logger.addHandler(file_handler)
|
|
|
|
# Configure specific loggers
|
|
logging.getLogger("uvicorn.access").setLevel(logging.WARNING)
|
|
logging.getLogger("sqlalchemy.engine").setLevel(logging.WARNING)
|
|
|
|
return logging.getLogger(__name__)
|