Send debugging information in an errored response to a logging service.
// Replace with your actual logging service endpointconst loggingEndpoint = "https://your-logging-endpoint"; export default { async fetch(request) { try { // Attempt to fetch the request from the origin server const response = await fetch(request.clone()); // Check if the response status indicates an error (for example, 4xx or 5xx) if (!response.ok) { // Prepare error details and context for logging const errorDetails = { status: response.status, statusText: response.statusText, url: request.url, method: request.method, headers: Object.fromEntries(request.headers), }; // Log error details to your logging service await logError(errorDetails); // Return the original response with status and statusText intact return new Response(response.body, { status: response.status, statusText: response.statusText, headers: response.headers, }); } // Return the successful response from the origin server return response; } catch (error) { // Handle any exceptions that occur during fetch const errorDetails = { message: error.message, stack: error.stack, url: request.url, method: request.method, headers: Object.fromEntries(request.headers), }; // Log error details to your logging service await logError(errorDetails); // Return a generic error response return new Response("Internal Server Error", { status: 500, }); } },}; // Function to log error details to your logging serviceasync function logError(details) { try { const response = await fetch(loggingEndpoint, { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify(details), }); if (!response.ok) { console.error("Failed to log error:", response.statusText); } } catch (error) { console.error("Error logging error:", error.message); }}