diff --git a/packages/backend/src/logger.ts b/packages/backend/src/logger.ts index 46edac8666..b3735200eb 100644 --- a/packages/backend/src/logger.ts +++ b/packages/backend/src/logger.ts @@ -27,7 +27,7 @@ export type DataObject = Record | (object & { length?: never; } export default class Logger { private context: Context; private parentLogger: Logger | null = null; - private readonly verbose: boolean; + public readonly verbose: boolean; constructor(context: string, color?: KEYWORD, verbose?: boolean) { this.context = { 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');