78 lines
2.5 KiB
Python
78 lines
2.5 KiB
Python
import logging
|
|
from fastapi import FastAPI
|
|
from core.config import settings
|
|
from api.api_v1.api import api_router
|
|
|
|
from fastapi.middleware.cors import CORSMiddleware
|
|
# Configuración inicial del logging (debe estar al inicio del archivo)
|
|
# logging.config.dictConfig({
|
|
# "version": 1,
|
|
# "disable_existing_loggers": False,
|
|
# "formatters": {
|
|
# "default": {
|
|
# "()": "uvicorn.logging.DefaultFormatter",
|
|
# "fmt": "%(levelprefix)s %(asctime)s | %(name)s | %(message)s",
|
|
# "datefmt": "%Y-%m-%d %H:%M:%S",
|
|
# "use_colors": True,
|
|
# },
|
|
# "access": {
|
|
# "()": "uvicorn.logging.AccessFormatter",
|
|
# "fmt": '%(levelprefix)s %(asctime)s | %(client_addr)s | "%(request_line)s" %(status_code)s',
|
|
# "datefmt": "%Y-%m-%d %H:%M:%S",
|
|
# },
|
|
# },
|
|
# "handlers": {
|
|
# "default": {
|
|
# "formatter": "default",
|
|
# "class": "logging.StreamHandler",
|
|
# "stream": "ext://sys.stdout",
|
|
# },
|
|
# "access": {
|
|
# "formatter": "access",
|
|
# "class": "logging.StreamHandler",
|
|
# "stream": "ext://sys.stdout",
|
|
# },
|
|
# },
|
|
# "loggers": {
|
|
# "": {"handlers": ["default"], "level": "DEBUG"},
|
|
# "uvicorn.error": {"level": "DEBUG"},
|
|
# "uvicorn.access": {"handlers": ["access"], "level": "DEBUG", "propagate": False},
|
|
# },
|
|
# })
|
|
|
|
def create_application() -> FastAPI:
|
|
"""Función factory para crear la aplicación FastAPI"""
|
|
application = FastAPI(
|
|
title=settings.APP_NAME,
|
|
description="EFC Microservice - Un microservicio profesional por AduanaSoft",
|
|
version=settings.APP_VERSION,
|
|
debug=settings.DEBUG,
|
|
)
|
|
|
|
# Configuración adicional para loggers específicos
|
|
app_logger = logging.getLogger("app")
|
|
app_logger.setLevel(logging.DEBUG if settings.DEBUG else logging.INFO)
|
|
|
|
# Incluir el router principal de la API
|
|
application.include_router(api_router, prefix="/api/v1")
|
|
|
|
return application
|
|
|
|
app = create_application()
|
|
app.add_middleware(
|
|
CORSMiddleware,
|
|
allow_origins=["*"], # O especifica ["http://localhost:5173"]
|
|
allow_credentials=True,
|
|
allow_methods=["*"],
|
|
allow_headers=["*"],
|
|
)
|
|
if __name__ == "__main__":
|
|
import uvicorn
|
|
uvicorn.run(
|
|
app,
|
|
host=settings.HOST,
|
|
port=settings.PORT,
|
|
log_config=None, # Usamos nuestra configuración
|
|
log_level="debug" if settings.DEBUG else "info",
|
|
reload=settings.DEBUG
|
|
) |