From 72832354e6975c35f93d274e63376e03008f9434 Mon Sep 17 00:00:00 2001 From: Morgan <33722304+ThyMinimalDev@users.noreply.github.com> Date: Tue, 4 Mar 2025 07:40:36 +0200 Subject: [PATCH] fix: api v2 axiom logs exceed column size (#19636) --- .../v2/src/filters/http-exception.filter.ts | 3 ++- .../v2/src/filters/prisma-exception.filter.ts | 3 ++- .../v2/src/filters/trpc-exception.filter.ts | 3 ++- .../v2/src/filters/zod-exception.filter.ts | 3 ++- apps/api/v2/src/lib/filterReqHeaders.ts | 20 +++++++++++++++++++ .../request-ids/request-id.middleware.ts | 3 ++- 6 files changed, 30 insertions(+), 5 deletions(-) create mode 100644 apps/api/v2/src/lib/filterReqHeaders.ts diff --git a/apps/api/v2/src/filters/http-exception.filter.ts b/apps/api/v2/src/filters/http-exception.filter.ts index 2aa35ba002..afa3b390d5 100644 --- a/apps/api/v2/src/filters/http-exception.filter.ts +++ b/apps/api/v2/src/filters/http-exception.filter.ts @@ -1,3 +1,4 @@ +import { filterReqHeaders } from "@/lib/filterReqHeaders"; import { ArgumentsHost, Catch, ExceptionFilter, HttpException, Logger } from "@nestjs/common"; import { Request } from "express"; @@ -18,7 +19,7 @@ export class HttpExceptionFilter implements ExceptionFilter { this.logger.error(`Http Exception Filter: ${exception?.message}`, { exception, body: request.body, - headers: request.headers, + headers: filterReqHeaders(request.headers), url: request.url, method: request.method, requestId, diff --git a/apps/api/v2/src/filters/prisma-exception.filter.ts b/apps/api/v2/src/filters/prisma-exception.filter.ts index 7977f84961..4b7b86e433 100644 --- a/apps/api/v2/src/filters/prisma-exception.filter.ts +++ b/apps/api/v2/src/filters/prisma-exception.filter.ts @@ -1,3 +1,4 @@ +import { filterReqHeaders } from "@/lib/filterReqHeaders"; import type { ArgumentsHost, ExceptionFilter } from "@nestjs/common"; import { Catch, HttpStatus, Logger } from "@nestjs/common"; import { @@ -44,7 +45,7 @@ export class PrismaExceptionFilter implements ExceptionFilter { this.logger.error(`PrismaError: ${error.message}`, { error, body: request.body, - headers: request.headers, + headers: filterReqHeaders(request.headers), url: request.url, method: request.method, requestId, diff --git a/apps/api/v2/src/filters/trpc-exception.filter.ts b/apps/api/v2/src/filters/trpc-exception.filter.ts index 47dbcd00b4..d79d936e70 100644 --- a/apps/api/v2/src/filters/trpc-exception.filter.ts +++ b/apps/api/v2/src/filters/trpc-exception.filter.ts @@ -1,3 +1,4 @@ +import { filterReqHeaders } from "@/lib/filterReqHeaders"; import { ArgumentsHost, Catch, ExceptionFilter, Logger } from "@nestjs/common"; import { Request } from "express"; @@ -46,7 +47,7 @@ export class TRPCExceptionFilter implements ExceptionFilter { this.logger.error(`TRPC Exception Filter: ${exception?.message}`, { exception, body: request.body, - headers: request.headers, + headers: filterReqHeaders(request.headers), url: request.url, method: request.method, requestId, diff --git a/apps/api/v2/src/filters/zod-exception.filter.ts b/apps/api/v2/src/filters/zod-exception.filter.ts index 7a61b5c71b..37d4495aac 100644 --- a/apps/api/v2/src/filters/zod-exception.filter.ts +++ b/apps/api/v2/src/filters/zod-exception.filter.ts @@ -1,3 +1,4 @@ +import { filterReqHeaders } from "@/lib/filterReqHeaders"; import type { ArgumentsHost, ExceptionFilter } from "@nestjs/common"; import { Catch, HttpStatus, Logger } from "@nestjs/common"; import { Request } from "express"; @@ -19,7 +20,7 @@ export class ZodExceptionFilter implements ExceptionFilter { this.logger.error(`ZodError: ${error.message}`, { error, body: request.body, - headers: request.headers, + headers: filterReqHeaders(request.headers), url: request.url, method: request.method, requestId, diff --git a/apps/api/v2/src/lib/filterReqHeaders.ts b/apps/api/v2/src/lib/filterReqHeaders.ts new file mode 100644 index 0000000000..e99d6fa779 --- /dev/null +++ b/apps/api/v2/src/lib/filterReqHeaders.ts @@ -0,0 +1,20 @@ +import { IncomingHttpHeaders } from "http"; + +export function filterReqHeaders(headers: IncomingHttpHeaders): Partial { + return { + "Content-Type": headers["content-type"], + "User-Agent": headers["user-agent"], + "X-Request-Id": headers["X-Request-Id"] ?? headers["x-request-id"], + // IP-related headers + "X-Forwarded-For": headers["x-forwarded-for"], + "X-Forwarded-Host": headers["x-forwarded-host"], + "CF-Connecting-IP": headers["cf-connecting-ip"], + "CloudFront-Viewer-Address": headers["cloudfront-viewer-address"], + // Vercel headers + "x-vercel-id": headers["x-vercel-id"], + "x-vercel-deployment-url": headers["x-vercel-deployment-url"], + "x-vercel-country": headers["x-vercel-country"], + "x-vercel-region": headers["x-vercel-region"], + Host: headers["host"], + }; +} diff --git a/apps/api/v2/src/middleware/request-ids/request-id.middleware.ts b/apps/api/v2/src/middleware/request-ids/request-id.middleware.ts index 08c6a691ba..1d52e18185 100644 --- a/apps/api/v2/src/middleware/request-ids/request-id.middleware.ts +++ b/apps/api/v2/src/middleware/request-ids/request-id.middleware.ts @@ -1,3 +1,4 @@ +import { filterReqHeaders } from "@/lib/filterReqHeaders"; import { Injectable, NestMiddleware, Logger } from "@nestjs/common"; import { Request, Response, NextFunction } from "express"; import { v4 as uuid } from "uuid"; @@ -15,7 +16,7 @@ export class RequestIdMiddleware implements NestMiddleware { requestId, method, url: baseUrl, - headers, + headers: filterReqHeaders(headers), requestBody, timestamp: new Date().toISOString(), });