@@ -300,14 +300,22 @@ function colourFromHTTPStatus(status: number): Colorize {
300300 return blue ;
301301}
302302
303+ const ADDITIONAL_RESPONSE_LOG_HEADER_NAME = "X-Mf-Additional-Response-Log" ;
304+
303305function maybeLogRequest (
304306 req : Request ,
305307 res : Response ,
306308 env : Env ,
307309 ctx : ExecutionContext ,
308310 startTime : number
309- ) {
310- if ( env [ CoreBindings . JSON_LOG_LEVEL ] < LogLevel . INFO ) return ;
311+ ) : Response {
312+ res = new Response ( res . body , res ) ; // Ensure mutable headers
313+ const additionalResponseLog = res . headers . get (
314+ ADDITIONAL_RESPONSE_LOG_HEADER_NAME
315+ ) ;
316+ res . headers . delete ( ADDITIONAL_RESPONSE_LOG_HEADER_NAME ) ;
317+
318+ if ( env [ CoreBindings . JSON_LOG_LEVEL ] < LogLevel . INFO ) return res ;
311319
312320 const url = new URL ( req . url ) ;
313321 const statusText = ( res . statusText . trim ( ) || STATUS_CODES [ res . status ] ) ?? "" ;
@@ -316,6 +324,9 @@ function maybeLogRequest(
316324 colourFromHTTPStatus ( res . status ) ( `${ bold ( res . status ) } ${ statusText } ` ) ,
317325 grey ( `(${ Date . now ( ) - startTime } ms)` ) ,
318326 ] ;
327+ if ( additionalResponseLog ) {
328+ lines . push ( ` ${ grey ( additionalResponseLog ) } ` ) ;
329+ }
319330 const message = reset ( lines . join ( "" ) ) ;
320331
321332 ctx . waitUntil (
@@ -325,6 +336,8 @@ function maybeLogRequest(
325336 body : message ,
326337 } )
327338 ) ;
339+
340+ return res ;
328341}
329342
330343function handleProxy ( request : Request , env : Env ) {
@@ -423,7 +436,7 @@ export default <ExportedHandler<Env>>{
423436 response = maybeInjectLiveReload ( response , env , ctx ) ;
424437 response = ensureAcceptableEncoding ( clientAcceptEncoding , response ) ;
425438 if ( env [ CoreBindings . LOG_REQUESTS ] ) {
426- maybeLogRequest ( request , response , env , ctx , startTime ) ;
439+ response = maybeLogRequest ( request , response , env , ctx , startTime ) ;
427440 }
428441 return response ;
429442 } catch ( e : any ) {
0 commit comments