Enhance request logging in development mode

Added functionality to log request timings in development mode. Introduced a WeakMap to track request start times and log the elapsed time along with the request method, pathname, and response status after each request. This improves observability during development.
This commit is contained in:
mantrakp04 2026-07-10 19:01:13 -07:00
parent 06e3a6afa9
commit 67e3350693

View File

@ -18,10 +18,27 @@ const globalSecurityHeaders = {
"Content-Security-Policy": "",
};
const knownHttpMethods = new Set<string>(httpMethodNames);
const developmentRequestStartTimes = new WeakMap<Request, number>();
const shouldLogDevelopmentRequests = getNodeEnvironment() === "development";
export const app = new Elysia({
adapter: node(),
})
.onRequest(({ request }) => {
if (shouldLogDevelopmentRequests) {
developmentRequestStartTimes.set(request, performance.now());
}
})
.onAfterResponse(({ request, set }) => {
if (!shouldLogDevelopmentRequests) {
return;
}
const startTime = developmentRequestStartTimes.get(request);
const elapsedMilliseconds = startTime == null ? "unknown" : (performance.now() - startTime).toFixed(1);
const pathname = new URL(request.url).pathname;
console.log(`[Elysia] ${request.method} ${pathname} ${set.status} ${elapsedMilliseconds}ms`);
})
.get("/", () => htmlResponse(homeHtml()))
.get("/dev-stats", () => htmlResponse(devStatsHtml()))
.get("/health/error-handler-debug", () => htmlResponse(errorHandlerDebugHtml()))