import createMiddleware from 'next-intl/middleware'; import { NextResponse } from 'next/server'; import type { NextRequest } from 'next/server'; // Create the internationalization middleware const intlMiddleware = createMiddleware({ // A list of all locales that are supported locales: ['en', 'de'], // Used when no locale matches defaultLocale: 'en' }); // Main middleware that logs all requests export default function middleware(request: NextRequest) { const startTime = Date.now(); const { method, url, headers } = request; const userAgent = headers.get('user-agent') || 'unknown'; const referer = headers.get('referer') || 'none'; const ip = headers.get('x-forwarded-for') || headers.get('x-real-ip') || 'unknown'; // Log incoming request console.log(`Incoming request: method=${method} url=${url}`); try { // Apply internationalization middleware const response = intlMiddleware(request); return response; } catch (error) { console.error(`Request failed: method=${method} url=${url}`, error); throw error; } } export const config = { // Match only internationalized pathnames matcher: ['/((?!api|_next|_vercel|health|.*\\..*).*)', '/', '/(de|en)/:path*'] };