diff --git a/src/shared/http-error.filter.ts b/src/shared/http-error.filter.ts index cafc414be633ac315931559cad3f4015eef0bf08..8a65068c4275c4a8d576da54b0340c17b6ac8cc4 100644 --- a/src/shared/http-error.filter.ts +++ b/src/shared/http-error.filter.ts @@ -1,23 +1,47 @@ -import { Catch, ExceptionFilter, HttpException, ArgumentsHost, Logger } from "@nestjs/common"; +import { + ExceptionFilter, + Catch, + ArgumentsHost, + Logger, + HttpException, + HttpStatus, +} from '@nestjs/common'; @Catch() export class HttpErrorFilter implements ExceptionFilter { - catch(exception: HttpException, host: ArgumentsHost) { - const ctx = host.switchToHttp(); - const request = ctx.getRequest(); - const response = ctx.getResponse(); - const status = exception.getStatus(); + catch(exception: HttpException, host: ArgumentsHost) { + const ctx = host.switchToHttp(); + const response = ctx.getResponse(); + const request = ctx.getRequest(); + const status = exception.getStatus + ? exception.getStatus() + : HttpStatus.INTERNAL_SERVER_ERROR; - const errorResponse = { - code: status, - timestamp: new Date().toLocaleDateString(), - path: request.url, - method: request.method, - message: exception.message.error || exception.message || null, - }; + const errorResponse = { + code: status, + timestamp: new Date().toLocaleDateString(), + path: request.url, + method: request.method, + message: + status !== HttpStatus.INTERNAL_SERVER_ERROR + ? exception.message.error || exception.message || null + : 'Internal server error', + }; - Logger.error(`${request.method} ${request.url}`, JSON.stringify(errorResponse), "ExceptionFilter"); - - response.status(404).json({errorResponse}); + if (status === HttpStatus.INTERNAL_SERVER_ERROR) { + Logger.error( + `${request.method} ${request.url}`, + exception.stack, + 'ExceptionFilter', + ); + } else { + Logger.error( + `${request.method} ${request.url}`, + JSON.stringify(errorResponse), + 'ExceptionFilter', + ); } -} \ No newline at end of file + + response.status(status).json(errorResponse); + } +}