logging enhancements

This commit is contained in:
Piotr Dec 2025-10-22 22:53:49 +02:00
parent 2dec6d5384
commit 569aefeccb
Signed by: stawros
GPG key ID: 74B18A3F0F1E99C0
8 changed files with 88 additions and 20 deletions

View file

@ -4,8 +4,7 @@ from fastapi import FastAPI
from injectable import load_injection_container
from app.config import get_settings
from app.core.core import WebhookProcessor
from app.util.logging import LoggingHandler, ExternalLoggingHandler
from app.util.logging import HandlerFactory
class KarlApplication:
@ -13,6 +12,7 @@ class KarlApplication:
def __init__(self) -> None:
self._set_logging()
_app = FastAPI(title="Karl", version="0.1.0")
self._set_middlewares(_app)
self._set_routes(_app)
self._set_events(_app)
self._init_services()
@ -23,7 +23,12 @@ class KarlApplication:
await self._app.__call__(scope, receive, send)
def _set_logging(self):
logging.basicConfig(level=logging.INFO, handlers=[LoggingHandler()])
settings = get_settings()
logging.addLevelName(5, "TRACE")
logging.Logger.trace = lambda s, msg, *args, **kwargs: s.log(5, msg, *args, **kwargs)
logging.basicConfig(level=settings.logging.level,
handlers=HandlerFactory.create(HandlerFactory.Target.ALL, handler_prefix='karl.',
file_path=settings.logging.path))
loggers = (
"uvicorn",
@ -33,12 +38,16 @@ class KarlApplication:
"asyncio",
"starlette",
)
external_handler = ExternalLoggingHandler()
external_handlers = HandlerFactory.create(HandlerFactory.Target.ALL, file_path=settings.logging.path)
for logger_name in loggers:
logging_logger = logging.getLogger(logger_name)
logging_logger.handlers = [external_handler]
logging_logger.handlers = external_handlers
logging_logger.propagate = False
def _set_middlewares(self, app: FastAPI):
from app.web.middlewares import LoggingMiddleware
app.add_middleware(LoggingMiddleware)
def _set_routes(self, app: FastAPI):
from app.core.router import router as core_router
app.include_router(core_router)
@ -52,11 +61,9 @@ class KarlApplication:
def _init_services(self):
logger = logging.getLogger(__name__)
load_injection_container()
webhook_service = WebhookProcessor()
logger.info(webhook_service.health)
def app():
def run():
return KarlApplication()
@ -65,7 +72,7 @@ if __name__ == "__main__":
settings = get_settings()
uvicorn.run(
"app.main:app",
"app.main:run",
factory=True,
host=settings.app.host,
port=settings.app.port,