@@ -20,14 +20,75 @@ import { warmAllCaches } from "./jobs/warmCache";
2020
2121dotenv . config ( ) ;
2222
23+ const debugLevel = Number ( process . env . LLAMA_DEBUG_LEVEL ?? "0" ) ;
24+ const requestDebugEnabled = process . env . FASTIFY_REQUEST_DEBUG === "1" || debugLevel >= 3 ;
25+ const verboseRequestDebugEnabled = process . env . FASTIFY_REQUEST_DEBUG_VERBOSE === "1" || debugLevel >= 4 ;
26+
2327const server : FastifyInstance = fastify ( {
24- logger : true ,
28+ logger : {
29+ level : requestDebugEnabled ? "debug" : "info" ,
30+ } ,
2531 connectionTimeout : 60000 ,
2632 keepAliveTimeout : 65000 ,
2733} ) ;
2834
29- server . addHook ( "onRequest" , async ( _ , reply ) => {
35+ server . addHook ( "onRequest" , async ( request : any , reply ) => {
36+ request . requestStartTime = Date . now ( ) ;
3037 reply . raw . setTimeout ( 55000 ) ;
38+ if ( requestDebugEnabled ) {
39+ request . log . info (
40+ {
41+ reqId : request . id ,
42+ method : request . method ,
43+ url : request . url ,
44+ routePath : request . routeOptions ?. url ,
45+ params : request . params ,
46+ query : request . query ,
47+ } ,
48+ "request:start"
49+ ) ;
50+ }
51+ } ) ;
52+
53+ server . addHook ( "onResponse" , async ( request : any , reply ) => {
54+ if ( ! requestDebugEnabled ) {
55+ return ;
56+ }
57+ const durationMs = typeof request . requestStartTime === "number" ? Date . now ( ) - request . requestStartTime : undefined ;
58+ const payload = {
59+ reqId : request . id ,
60+ method : request . method ,
61+ url : request . url ,
62+ routePath : request . routeOptions ?. url ,
63+ statusCode : reply . statusCode ,
64+ durationMs,
65+ } as any ;
66+ if ( verboseRequestDebugEnabled ) {
67+ payload . params = request . params ;
68+ payload . query = request . query ;
69+ }
70+ request . log . info ( payload , "request:done" ) ;
71+ } ) ;
72+
73+ server . addHook ( "onError" , async ( request : any , reply , error ) => {
74+ if ( ! requestDebugEnabled ) {
75+ return ;
76+ }
77+ const durationMs = typeof request . requestStartTime === "number" ? Date . now ( ) - request . requestStartTime : undefined ;
78+ request . log . error (
79+ {
80+ reqId : request . id ,
81+ method : request . method ,
82+ url : request . url ,
83+ routePath : request . routeOptions ?. url ,
84+ statusCode : reply . statusCode ,
85+ durationMs,
86+ params : request . params ,
87+ query : request . query ,
88+ err : error ,
89+ } ,
90+ "request:error"
91+ ) ;
3192} ) ;
3293
3394const lambdaToFastify = ( handler : Function ) => async ( request : any , reply : any ) => {
0 commit comments