Files
saladeaula.digital/packages/auth/src/middleware/logging.ts

28 lines
763 B
TypeScript

import { type LoaderFunctionArgs } from 'react-router'
import { requestIdContext } from '../context'
export const loggingMiddleware = async (
{ request, context }: LoaderFunctionArgs,
next: () => Promise<Response>
): Promise<Response> => {
const requestId = crypto.randomUUID()
context.set(requestIdContext, requestId)
console.log(
`[${new Date().toISOString()}] [${requestId}] ${request.method} ${request.url}`
)
const start = performance.now()
const response = await next()
const duration = performance.now() - start
console.log(
`[${new Date().toISOString()}] [${requestId}] Response ${response.status} (${duration}ms)`
)
response.headers.set('Server-Timing', `page;req=${requestId};dur=${duration}`)
return response
}