From c0f24eaf5de2fc0650abb2911abb747234e58236 Mon Sep 17 00:00:00 2001 From: Hazelnoot Date: Tue, 6 May 2025 17:42:23 -0400 Subject: correctly parse response errors for logging --- .../src/server/api/mastodon/MastodonApiServerService.ts | 9 ++++++--- packages/backend/src/server/api/mastodon/MastodonLogger.ts | 10 +++++----- 2 files changed, 11 insertions(+), 8 deletions(-) (limited to 'packages/backend/src/server') diff --git a/packages/backend/src/server/api/mastodon/MastodonApiServerService.ts b/packages/backend/src/server/api/mastodon/MastodonApiServerService.ts index 359408d882..d95d75f12f 100644 --- a/packages/backend/src/server/api/mastodon/MastodonApiServerService.ts +++ b/packages/backend/src/server/api/mastodon/MastodonApiServerService.ts @@ -56,9 +56,12 @@ export class MastodonApiServerService { // Log error responses (including converted JSON exceptions) fastify.addHook('onSend', (request, reply, payload, done) => { - if (reply.statusCode >= 400) { - const data = getErrorData(payload); - this.logger.error(request, data, reply.statusCode); + if (reply.statusCode >= 500 || (reply.statusCode >= 400 && this.logger.verbose)) { + if (typeof(payload) === 'string' && String(reply.getHeader('content-type')).toLowerCase().includes('application/json')) { + const body = JSON.parse(payload); + const data = getErrorData(body); + this.logger.error(request, data, reply.statusCode); + } } done(); }); diff --git a/packages/backend/src/server/api/mastodon/MastodonLogger.ts b/packages/backend/src/server/api/mastodon/MastodonLogger.ts index 096a3521a7..f43e2fc764 100644 --- a/packages/backend/src/server/api/mastodon/MastodonLogger.ts +++ b/packages/backend/src/server/api/mastodon/MastodonLogger.ts @@ -3,22 +3,22 @@ * SPDX-License-Identifier: AGPL-3.0-only */ -import { Inject, Injectable } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { FastifyRequest } from 'fastify'; import Logger from '@/logger.js'; import { LoggerService } from '@/core/LoggerService.js'; import { ApiError } from '@/server/api/error.js'; -import { EnvService } from '@/core/EnvService.js'; import { getBaseUrl } from '@/server/api/mastodon/MastodonClientService.js'; @Injectable() export class MastodonLogger { public readonly logger: Logger; - constructor( - @Inject(EnvService) - private readonly envService: EnvService, + public get verbose() { + return this.logger.verbose; + } + constructor( loggerService: LoggerService, ) { this.logger = loggerService.getLogger('masto-api'); -- cgit v1.2.3-freya