diff --git a/backend/src/common/filters/http-exception.filter.ts b/backend/src/common/filters/http-exception.filter.ts index 6ef6e4f..a93e28c 100644 --- a/backend/src/common/filters/http-exception.filter.ts +++ b/backend/src/common/filters/http-exception.filter.ts @@ -9,6 +9,14 @@ import { import * as Sentry from "@sentry/nestjs"; import { Request, Response } from "express"; +interface RequestWithUser extends Request { + user?: { + sub?: string; + username?: string; + id?: string; + }; +} + @Catch() export class AllExceptionsFilter implements ExceptionFilter { private readonly logger = new Logger("ExceptionFilter"); @@ -16,7 +24,7 @@ export class AllExceptionsFilter implements ExceptionFilter { catch(exception: unknown, host: ArgumentsHost) { const ctx = host.switchToHttp(); const response = ctx.getResponse(); - const request = ctx.getRequest(); + const request = ctx.getRequest(); const status = exception instanceof HttpException @@ -28,6 +36,9 @@ export class AllExceptionsFilter implements ExceptionFilter { ? exception.getResponse() : "Internal server error"; + const userId = request.user?.sub || request.user?.id; + const userPart = userId ? `[User: ${userId}] ` : ""; + const errorResponse = { statusCode: status, timestamp: new Date().toISOString(), @@ -42,12 +53,12 @@ export class AllExceptionsFilter implements ExceptionFilter { if (status === HttpStatus.INTERNAL_SERVER_ERROR) { Sentry.captureException(exception); this.logger.error( - `${request.method} ${request.url} - Error: ${exception instanceof Error ? exception.message : "Unknown error"}`, + `${userPart}${request.method} ${request.url} - Error: ${exception instanceof Error ? exception.message : "Unknown error"}`, exception instanceof Error ? exception.stack : "", ); } else { this.logger.warn( - `${request.method} ${request.url} - Status: ${status} - Message: ${JSON.stringify(message)}`, + `${userPart}${request.method} ${request.url} - Status: ${status} - Message: ${JSON.stringify(message)}`, ); }