This commit is contained in:
@@ -1,7 +1,6 @@
|
|||||||
import createMiddleware from 'next-intl/middleware';
|
import createMiddleware from 'next-intl/middleware';
|
||||||
import { NextResponse } from 'next/server';
|
import { NextResponse } from 'next/server';
|
||||||
import type { NextRequest } from 'next/server';
|
import type { NextRequest } from 'next/server';
|
||||||
import { getServerAppServices } from '@/lib/services/create-services.server';
|
|
||||||
|
|
||||||
// Create the internationalization middleware
|
// Create the internationalization middleware
|
||||||
const intlMiddleware = createMiddleware({
|
const intlMiddleware = createMiddleware({
|
||||||
@@ -20,40 +19,20 @@ export default function middleware(request: NextRequest) {
|
|||||||
const referer = headers.get('referer') || 'none';
|
const referer = headers.get('referer') || 'none';
|
||||||
const ip = headers.get('x-forwarded-for') || headers.get('x-real-ip') || 'unknown';
|
const ip = headers.get('x-forwarded-for') || headers.get('x-real-ip') || 'unknown';
|
||||||
|
|
||||||
// Get logger service
|
|
||||||
const services = getServerAppServices();
|
|
||||||
const logger = services.logger.child({ middleware: 'request-logger' });
|
|
||||||
|
|
||||||
// Log incoming request
|
// Log incoming request
|
||||||
logger.info(`Incoming request: method=${method} url=${url} ip=${ip} ua="${userAgent.slice(0,60)}${userAgent.length>60 ? '...' : ''}" ref="${referer.slice(0,80)}${referer.length>80 ? '...' : ''}"`);
|
console.log(`Incoming request: method=${method} url=${url}`);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// Apply internationalization middleware
|
// Apply internationalization middleware
|
||||||
const response = intlMiddleware(request);
|
const response = intlMiddleware(request);
|
||||||
const duration = Date.now() - startTime;
|
|
||||||
|
|
||||||
// Log successful response
|
|
||||||
if (response.status >= 300 && response.status < 400) {
|
|
||||||
const location = response.headers.get('location') || 'unknown';
|
|
||||||
logger.info(`Redirect detected: status=${response.status} location="${location.slice(0,100)}${location.length>100?'...':''}" method=${method} url=${url} duration=${duration}ms ip=${ip} ua="${userAgent.slice(0,60)}${userAgent.length>60?'...':''}" ref="${referer.slice(0,80)}${referer.length>80?'...':''}"`);
|
|
||||||
} else {
|
|
||||||
logger.info(`Request completed: status=${response.status} method=${method} url=${url} duration=${duration}ms ip=${ip} ua="${userAgent.slice(0,60)}${userAgent.length>60?'...':''}" ref="${referer.slice(0,80)}${referer.length>80?'...':''}"`);
|
|
||||||
}
|
|
||||||
|
|
||||||
return response;
|
return response;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
const duration = Date.now() - startTime;
|
console.error(`Request failed: method=${method} url=${url}`, error);
|
||||||
|
|
||||||
// Log error
|
|
||||||
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
||||||
logger.error(`Request failed: method=${method} url=${url} duration=${duration}ms error="${errorMsg}" ip=${ip} ua="${userAgent.slice(0,60)}${userAgent.length>60?'...':''}" ref="${referer.slice(0,80)}${referer.length>80?'...':''}"`);
|
|
||||||
|
|
||||||
// Re-throw the error to let Next.js handle it
|
|
||||||
throw error;
|
throw error;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export const config = {
|
export const config = {
|
||||||
// Match only internationalized pathnames
|
// Match only internationalized pathnames
|
||||||
matcher: ['/((?!api|_next|_vercel|.*\\..*).*)', '/', '/(de|en)/:path*']
|
matcher: ['/((?!api|_next|_vercel|health|.*\\..*).*)', '/', '/(de|en)/:path*']
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user