logging improvements

This commit is contained in:
hagen-danswer 2024-09-01 16:02:54 -07:00 committed by Chris Weaver
parent 8d443ada5b
commit a96cea2ce0
3 changed files with 28 additions and 5 deletions

View File

@ -1,4 +1,5 @@
import time
import traceback
from collections.abc import AsyncGenerator
from contextlib import asynccontextmanager
from typing import Any
@ -8,6 +9,7 @@ import uvicorn
from fastapi import APIRouter
from fastapi import FastAPI
from fastapi import Request
from fastapi import status
from fastapi.exceptions import RequestValidationError
from fastapi.middleware.cors import CORSMiddleware
from fastapi.responses import JSONResponse
@ -407,11 +409,32 @@ async def lifespan(app: FastAPI) -> AsyncGenerator:
yield
def log_http_error(_: Request, exc: Exception) -> JSONResponse:
status_code = getattr(exc, "status_code", 500)
if status_code >= 400:
error_msg = f"{str(exc)}\n"
error_msg += "".join(traceback.format_tb(exc.__traceback__))
logger.error(error_msg)
return JSONResponse(
status_code=status_code,
content={"detail": str(exc)},
)
def get_application() -> FastAPI:
application = FastAPI(
title="Danswer Backend", version=__version__, lifespan=lifespan
)
# Add the custom exception handler
application.add_exception_handler(status.HTTP_400_BAD_REQUEST, log_http_error)
application.add_exception_handler(status.HTTP_401_UNAUTHORIZED, log_http_error)
application.add_exception_handler(status.HTTP_403_FORBIDDEN, log_http_error)
application.add_exception_handler(status.HTTP_404_NOT_FOUND, log_http_error)
application.add_exception_handler(
status.HTTP_500_INTERNAL_SERVER_ERROR, log_http_error
)
include_router_with_global_prefix_prepended(application, chat_router)
include_router_with_global_prefix_prepended(application, query_router)
include_router_with_global_prefix_prepended(application, document_router)

View File

@ -69,7 +69,7 @@ def set_user_role(
if user_role_update_request.new_role == UserRole.CURATOR:
raise HTTPException(
status_code=402,
status_code=400,
detail="Curator role must be set via the User Group Menu",
)
@ -78,7 +78,7 @@ def set_user_role(
if current_user.id == user_to_update.id:
raise HTTPException(
status_code=402,
status_code=400,
detail="An admin cannot demote themselves from admin role!",
)

View File

@ -51,14 +51,14 @@ def validate_user_creation_permissions(
detail = "User does not have permission to create public credentials"
logger.error(detail)
raise HTTPException(
status_code=402,
status_code=400,
detail=detail,
)
if not target_group_ids:
detail = "Curators must specify 1+ groups"
logger.error(detail)
raise HTTPException(
status_code=402,
status_code=400,
detail=detail,
)
user_curated_groups = fetch_user_groups_for_user(
@ -70,7 +70,7 @@ def validate_user_creation_permissions(
detail = "Curators cannot control groups they don't curate"
logger.error(detail)
raise HTTPException(
status_code=402,
status_code=400,
detail=detail,
)