The recipes.blue monorepo recipes.blue
recipes appview atproto
at feature/nextjs-frontend 29 lines 709 B view raw
1import type { FetchMiddleware } from "@atcute/xrpc-server"; 2import type { Logger } from "pino"; 3 4export const logMiddleware = (logger: Logger): FetchMiddleware => { 5 return async (req, next) => { 6 const startTime = new Date(); 7 logger.setBindings({ 8 request: { 9 method: req.method, 10 path: new URL(req.url).pathname, 11 id: crypto.randomUUID(), 12 } 13 }); 14 15 logger.info('Request received'); 16 17 const response = await next(req); 18 const endTime = new Date(); 19 20 logger.info({ 21 response: { 22 status: response.status, 23 durationMs: endTime.getTime() - startTime.getTime(), 24 }, 25 }, 'Finished processing request'); 26 27 return response; 28 }; 29};