diff --git a/src/files.js b/src/files.js
index 615728ebb4dfee2e58576bfad31f85bb7d791a34..6ce97ed443298a09e4b82cf9a4e121c13c593951 100644
--- a/src/files.js
+++ b/src/files.js
@@ -88,7 +88,7 @@ export async function fetchFileWithHeaders ({ path, version }) {
       return fetchFileWithHeadersFromBaseUrl({ path, baseUrl, version })
     } catch (err) {
       logger.debug(`[Files] File ${path} had a baseUrl but could not be found on that server: ${err}`)
-      if (err instanceof VersionMismatchError) throw err
+      if (isVersionMismatchError(err)) throw err
     }
   }
 
diff --git a/src/plugins/logging.js b/src/plugins/logging.js
deleted file mode 100644
index 8d17eda6d8bf0657c238c4d8c24778a426f360ed..0000000000000000000000000000000000000000
--- a/src/plugins/logging.js
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- *
- * @copyright Copyright (c) OX Software GmbH, Germany <info@open-xchange.com>
- * @license AGPL-3.0
- *
- * This code is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with OX App Suite. If not, see <https://www.gnu.org/licenses/agpl-3.0.txt>.
- *
- * Any use of the work other than as authorized under this license or copyright law is prohibited.
- *
- */
-
-import fp from 'fastify-plugin'
-
-// This plugin is used to log requests and responses.
-export default fp(async (fastify) => {
-  // Logs the request body with the 'trace' level
-  fastify.addHook('preHandler', function (req, reply, done) {
-    if (req.body) req.log.trace({ body: req.body }, 'parsed body')
-    done()
-  })
-
-  fastify.addHook('onError', (req, reply, { message, stack, statusCode }, done) => {
-    const error = { statusCode, stack }
-    reply.log.error(error, message || 'request errored')
-    done()
-  })
-
-  // Logs the request with the 'debug' level and also logs headers with the 'trace' level
-  fastify.addHook('onResponse', (req, reply, done) => {
-    const loggingOptions = { url: req.raw.url, res: reply, responseTime: reply.getResponseTime() }
-    if (process.env.LOG_LEVEL === 'trace') loggingOptions.headers = req.headers
-    reply.log.debug(loggingOptions, 'request completed')
-    done()
-  })
-})
diff --git a/src/routes/autohooks.js b/src/routes/autohooks.js
index 6c0770ce8f29984f055f2e132952b92c824928e3..5467578a7aade801798728d0cbe777dad06495d7 100644
--- a/src/routes/autohooks.js
+++ b/src/routes/autohooks.js
@@ -30,13 +30,14 @@ export default async function (app, opts) {
     reply.header('version', version)
     reply.header('latest-version', latestVersion)
     reply.version = version
+    if (req.body) req.log.trace({ body: req.body }, 'parsed body')
   })
 
   // Add a hook to log errors
-  app.addHook('onError', (req, reply, { message, stack, statusCode }, done) => {
-    const error = { statusCode, stack }
-    /* c8 ignore next */
-    reply.log.error(error, message || 'request errored')
+  app.addHook('onError', (req, reply, fastifyError, done) => {
+    // @ts-ignore - AggregateError is not yet part of the types
+    const aggregatedErrors = fastifyError.errors instanceof Array ? fastifyError.errors : [fastifyError]
+    aggregatedErrors.forEach(error => error.err ? reply.log.error(error, error.err.message) : reply.log.error(error, error.message || 'request errored'))
     done()
   })