diff --git a/app/database.py b/app/database.py index f3b301d..d830b89 100644 --- a/app/database.py +++ b/app/database.py @@ -4,6 +4,7 @@ from sqlalchemy.ext.asyncio import async_sessionmaker, create_async_engine from app.config import settings as global_settings from app.utils.logging import setup_structlog + logger = setup_structlog() engine = create_async_engine( diff --git a/app/main.py b/app/main.py index 29c8847..7dd3403 100644 --- a/app/main.py +++ b/app/main.py @@ -1,11 +1,7 @@ -import logging -import os from contextlib import asynccontextmanager from pathlib import Path import asyncpg -import orjson -import structlog from fastapi import Depends, FastAPI, Request from fastapi.responses import HTMLResponse from fastapi.templating import Jinja2Templates @@ -19,10 +15,8 @@ from app.api.user import router as user_router from app.config import settings as global_settings from app.redis import get_redis from app.services.auth import AuthBearer -from whenever._whenever import Instant from app.utils.logging import setup_structlog - logger = setup_structlog() templates = Jinja2Templates(directory=Path(__file__).parent.parent / "templates") @@ -81,4 +75,4 @@ app = create_app() # app.add_middleware(SchedulerMiddleware, scheduler=_scheduler_himself) # TODO: every non-GET method should reset cache # TODO: scheduler tasks needing DB should access connection pool via request -# TODO: https://stackoverflow.com/questions/16053364/make-sure-only-one-worker-launches-the-apscheduler-event-in-a-pyramid-web-app-ru \ No newline at end of file +# TODO: https://stackoverflow.com/questions/16053364/make-sure-only-one-worker-launches-the-apscheduler-event-in-a-pyramid-web-app-ru diff --git a/app/utils/logging.py b/app/utils/logging.py index 2c5ec53..e889639 100644 --- a/app/utils/logging.py +++ b/app/utils/logging.py @@ -1,16 +1,16 @@ +import logging +import os from logging.handlers import RotatingFileHandler +from pathlib import Path +import orjson +import structlog from rich.console import Console from rich.logging import RichHandler +from whenever._whenever import Instant from app.utils.singleton import SingletonMeta -import logging -import os -import orjson -import structlog -from whenever._whenever import Instant -from pathlib import Path class AppLogger(metaclass=SingletonMeta): _logger = None @@ -30,6 +30,8 @@ class RichConsoleHandler(RichHandler): ) + +# TODO: merge this wrapper with the one in structlog under one hood of AppLogger class BytesToTextIOWrapper: def __init__(self, handler, encoding="utf-8"): self.handler = handler