fix: logging.getLogger gets properly configured logger

This commit is contained in:
Piotr Dec 2025-10-15 23:57:19 +02:00
parent 2d3699ad00
commit 27d1332b35
Signed by: stawros
GPG key ID: 74B18A3F0F1E99C0
6 changed files with 133 additions and 34 deletions

View file

@ -1,41 +1,68 @@
from fastapi import FastAPI, Request
from fastapi.responses import HTMLResponse
from jinja2 import Environment, FileSystemLoader, select_autoescape
import logging
from fastapi import FastAPI
from app.api.v1 import router as api_v1_router
from app.config import get_settings
from app.core.core import WebhookProcessor
# Inicjalizacja Jinja2
templates_env = Environment(
loader=FileSystemLoader("app/templates"),
autoescape=select_autoescape(["html", "xml"]),
)
app = FastAPI(title="Karl", version="0.1.0")
# Rejestracja routera API pod /api/v1
app.include_router(api_v1_router, prefix="/api/v1", tags=["v1"])
# app.add_event_handler()
webhook_service = WebhookProcessor()
print(webhook_service.health)
from app.util.logging import LoggingHandler, ExternalLoggingHandler
# Przykładowy endpoint HTML
@app.get("/", response_class=HTMLResponse)
async def index(request: Request) -> HTMLResponse:
template = templates_env.get_template("index.html")
html = template.render(title="Strona główna", request=request)
return HTMLResponse(content=html)
class KarlApplication:
def __init__(self) -> None:
self._set_logging()
app = FastAPI(title="Karl", version="0.1.0")
self._set_routes(app)
self._set_events(app)
self._init_services()
pass
def _set_logging(self):
logging.basicConfig(level=logging.INFO, handlers=[LoggingHandler()])
loggers = (
"uvicorn",
"uvicorn.access",
"uvicorn.error",
"fastapi",
"asyncio",
"starlette",
)
external_handler = ExternalLoggingHandler()
for logger_name in loggers:
logging_logger = logging.getLogger(logger_name)
logging_logger.handlers = [external_handler]
logging_logger.propagate = False
def _set_routes(self, app: FastAPI):
from app.core.router import router as core_router
app.include_router(core_router)
from app.api.v1 import router as api_v1_router
app.include_router(api_v1_router, prefix="/api/v1", tags=["v1"])
pass
def _set_events(self, app: FastAPI):
pass
def _init_services(self):
logger = logging.getLogger(__name__)
webhook_service = WebhookProcessor()
logger.info(webhook_service.health)
def run() -> None:
def app():
return KarlApplication()
if __name__ == "__main__":
import uvicorn
settings = get_settings()
uvicorn.run(
"app.main:app",
factory=True,
host=settings.app.host,
port=settings.app.port,
reload=settings.app.reload,
log_config=None,
)