Skip to content

Commit 5e3dee8

Browse files
committed
feat(logs): Concluído implementação do sistema de logs.
- Adicionado captura de exceções não tratadas - Adicionado captura de erros específicos em funções
1 parent d2d5303 commit 5e3dee8

2 files changed

Lines changed: 14 additions & 2 deletions

File tree

backend/src/app.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
from fastapi.responses import JSONResponse
66
from slowapi.middleware import SlowAPIMiddleware
77
from slowapi.errors import RateLimitExceeded
8-
from src.utils import limiter
8+
from src.utils import limiter, get_user_ip
99
import uvicorn
1010
from src.logger import setup_discord_logging, logger
1111

@@ -25,6 +25,14 @@
2525
allow_headers=['*'],
2626
)
2727

28+
@app.middleware("http")
29+
async def capture_exceptions(request: Request, call_next):
30+
try:
31+
return await call_next(request)
32+
except Exception as exc:
33+
logger.critical(f"`{request.method} {request.url.path}` Erro não tratado!\n- IP: {get_user_ip(request)} - Session ID: {request.cookies.get('session_id')}\n```{exc}```")
34+
return JSONResponse(status_code=500, content={"detail": "Internal Server Error"})
35+
2836
@app.exception_handler(RateLimitExceeded)
2937
async def rate_limit_exception_handler(request: Request, exc: RateLimitExceeded):
3038
return JSONResponse(

backend/src/security.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
from src.db.models import User, RefreshToken
88
from src.settings import JWT_SECRET_KEY, JWT_EXPIRATION_TIME
99
from src.utils import get_user_agent, get_user_ip
10+
from src.logger import logger
1011
import hashlib
1112
import secrets
1213
import uuid
@@ -51,6 +52,7 @@ def generate_jwt_token(user_id: int, username: str, session_id: str,
5152
secure=True,
5253
samesite='none'
5354
)
55+
logger.info(f"`generate_jwt_token`: Token JWT gerado com sucesso\n```User ID: {user_id} - Username: {username} - Session ID: {session_id}\nIP: {get_user_ip(request)} | User-Agent: {request.headers.get('User-Agent')}```")
5456
return {'access_token': jwt, 'refresh_token': refresh_token}
5557

5658
def generate_refresh_token(user_id: int, session_id: str, request: Request, remember: bool, db: Session):
@@ -83,6 +85,7 @@ def decode_jwt_token(token: str):
8385
except ExpiredSignatureError:
8486
raise HTTPException(status_code=401, detail='Token expired')
8587
except (InvalidAlgorithmError, InvalidSignatureError, InvalidTokenError):
88+
logger.error(f"`decode_jwt_token`: Token JWT inválido\n```Token: {token}```")
8689
raise HTTPException(status_code=401, detail='Invalid token')
8790

8891
return jwt
@@ -106,7 +109,8 @@ def get_user(request: Request, response: Response, db: Session = Depends(get_db)
106109
'username': user.username,
107110
'email': user.email
108111
}
109-
except Exception:
112+
except Exception as e:
113+
logger.error(f"`get_user`: Erro ao decodificar token JWT\n```Token: {token}\nError: {e}```")
110114
pass
111115

112116
if not refresh_token:

0 commit comments

Comments
 (0)