From 0c067719a5042790ce30f2c74a6d198f668aeaa9 Mon Sep 17 00:00:00 2001 From: msramalho <19508417+msramalho@users.noreply.github.com> Date: Thu, 9 Mar 2023 11:30:59 +0000 Subject: [PATCH] improves logging --- src/main.py | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/main.py b/src/main.py index f311d91..a4443f5 100644 --- a/src/main.py +++ b/src/main.py @@ -1,12 +1,12 @@ from celery.result import AsyncResult -from fastapi import Body, FastAPI, Depends +from fastapi import Body, FastAPI, Depends, Request from fastapi.encoders import jsonable_encoder from fastapi.responses import JSONResponse, FileResponse from fastapi.staticfiles import StaticFiles from fastapi.middleware.cors import CORSMiddleware import alembic.config from dotenv import load_dotenv -import traceback, os +import traceback, os, logging from loguru import logger from worker import create_archive_task, celery @@ -22,6 +22,7 @@ load_dotenv() ALLOWED_ORIGINS = os.environ.get("ALLOWED_ORIGINS", "chrome-extension://ondkcheoicfckabcnkdgbepofpjmjcmb,chrome-extension://ojcimmjndnlmmlgnjaeojoebaceokpdp").split(",") VERSION = "0.2.0" + app = FastAPI() app.add_middleware( CORSMiddleware, @@ -41,6 +42,16 @@ def get_db(): @app.get("/") def home(): return JSONResponse({"version": VERSION}) + +# logging configurations +logger.add("logs/api_logs.log", retention="30 days", rotation="3 days") +@app.middleware("http") +async def logging_middleware(request: Request, call_next): + response = await call_next(request) + logger.info(f"{request.client.host}:{request.client.port} {request.method} {request.url._url} - HTTP {response.status_code}") + return response + + # Bearer protected below @app.get("/tasks/search-url", response_model=list[schemas.Task]) @@ -105,3 +116,5 @@ async def on_startup(): # await create_db_and_tables()https://github.com/bellingcat/auto-archiver/tree/dockerize models.Base.metadata.create_all(bind=engine) alembic.config.main(argv=['--raiseerr', 'upgrade', 'head']) + # disabling uvicorn logger since we use loguru in logging_middleware + logging.getLogger("uvicorn.access").disabled = True