Write a Class Whenever there are errors – redirect to one error page

Step 1:- Create CustomErrorHandler.php

In app\Exceptions\CustomErrorHandler.php

<?php

namespace App\Exceptions;

use Exception;
use Throwable;
use App\Mail\ErrorEmail;
use Illuminate\Support\Facades\Mail;
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Log;

class CustomErrorHandler extends ExceptionHandler
{
    /**
     * Report or log an exception.
     *
     * @param  \Exception  $exception
     * @return void
     */
    public function report(Throwable $exception)
    {
        // Log the exception
        Log::error($exception);

        // Send an email with the error details
        if ($this->shouldReport($exception) && config('mail.from.address')) {
            $this->sendErrorEmail($exception);
        }

        parent::report($exception);
    }

    /**
     * Render an exception into an HTTP response.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Throwable  $exception
     * @return \Illuminate\Http\Response
     */
    public function render($request, Throwable $exception)
    {
        
        return response()->view('errors.custom', [], 500);
    }
    protected function sendErrorEmail(Throwable $exception)
    {
        Log::info("sendErrorEmail m aa gaya h");
        try {
            $url = request()->fullUrl();
            $user = auth()->user();

            if ($user && $user->email) {
                $userEmail = $user->email;

                Log::info("sendErrorEmail m aa gaya h" . $url);
                Log::info("sendErrorEmail userEmail m aa gaya h" . $userEmail);

                Mail::to(config('mail.from.address'))
                    ->send(new ErrorEmail($url, $userEmail, $exception->getMessage()));
            }
        } catch (\Exception $e) {
            Log::error('Error sending error email: ' . $e->getMessage());
        }
    }
}

Step 2:- Create a blade page

resources\views\errors\custom.blade.php

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Custom Error</title>
    <!-- Include Bootstrap CSS -->
    <link href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" rel="stylesheet">
    <!-- Include your CSS styles here -->
    <style>
        body {
            font-family: 'Arial', sans-serif;
            background-color: #f8f9fa;
        }

        .container {
            margin-top: 50px;
        }

        .error-message {
            margin-top: 50px;
            font-size: 60px;
            font-weight: bold;
            color: #dc3545;
        }

        .error-content {
            font-size: 36px;
            margin-top: 20px;
        }

        .error-image {
            
            max-width: 100%;
            height: auto;
            margin-top: 20px;
        }
    </style>
</head>

<body>

    <div class="container">
        <div class="row">
            <div class="col-md-7">
                <div class="error-message">Opps!</div>
                <div class="error-content">
                    We can't seem to find the page you're looking for.
                </div>
                <br>
                <a href="https://www.wizbrand.com/" class="btn btn-primary btn-lg">Go to Homepage</a>
            </div>
            <div class="col-md-5">
                <div class="error-image">
                    <!-- Replace 'path/to/error-image.jpg' with the actual path to your error image -->
                    <img src="{{ asset('/assets/images/error.png')}}" alt="Error Image">
                </div>
            </div>
        </div>
    </div>

    <!-- Include Bootstrap JS and jQuery -->
    <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>

</body>

</html>

Step 3:- ErrorEmail.php

app\Mail\ErrorEmail.php

<?php

namespace App\Mail;

use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;

class ErrorEmail extends Mailable
{
    use Queueable, SerializesModels;

    public $url;
    public $userEmail;
    public $errorMessage;

    /**
     * Create a new message instance.
     *
     * @param  string  $url
     * @param  string  $userEmail
     * @param  string  $errorMessage
     * @return void
     */
    public function __construct($url, $userEmail, $errorMessage)
    {
        $this->url = $url;
        $this->userEmail = $userEmail;
        $this->errorMessage = $errorMessage;
    }

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        return $this
        ->subject('Server Error')
        ->view('emails.error');
    }
}

Step 4:- app\Providers\AppServiceProvider.php
Paste a code

 use App\Exceptions\CustomErrorHandler;

public function register()
    {
        $this->app->singleton(
            \Illuminate\Contracts\Debug\ExceptionHandler::class,
            \App\Exceptions\CustomErrorHandler::class
        );
    }

Step 5:- Create a error.blade.php
resources\views\emails\error.blade.php

<p>Dear Team,</p>

<p>An error occurred while processing a request on the website. Here are the details:</p>

<p><strong>URL:</strong> {{ $url }}</p>
<p><strong>User Email:</strong> {{ $userEmail }}</p>
<p><strong>Error Message:</strong> {{ $errorMessage }}</p>

<p>We appreciate your prompt attention to this matter.</p>

<p>Regards,<br>Your Application Team</p>

Output:-

Related Posts

Professional Skill Alignment Around MLOps Foundation Certification in Modern Workplaces

Introduction The MLOps Foundation Certification has emerged as a critical benchmark for professionals looking to bridge the gap between data science and production engineering. This guide is…

Read More

Certified AIOps Manager: Strategic Framework for Intelligent IT Operations

Introduction The Certified AIOps Manager program is a specialized training designed to help professionals lead the next wave of IT operations. This guide is for engineers and…

Read More

Advanced AIOps Architect Certification Roadmap for DevOps Engineers

Introduction The Certified AIOps Architect is a comprehensive professional program designed for engineers and architects who want to master the intersection of Artificial Intelligence and IT Operations….

Read More

Advanced Certified AIOps Professional Guide for Mastering AI Driven Operations Skills

Introduction Artificial Intelligence for IT Operations is the future of managing complex systems and large scale digital environments. The Certified AIOps Professional program is designed for those…

Read More

Certified AIOps Engineer Training to Boost Automation Monitoring and Career Growth

The Certified AIOps Engineer is a specialized professional program designed to integrate artificial intelligence into modern IT operations. As systems scale and generate massive amounts of telemetry…

Read More

Advanced Guide to AIOps Foundation Certification for Scalable IT Infrastructure

In an era where infrastructure and applications generate massive amounts of telemetry data, manual intervention is no longer a sustainable strategy for maintaining system uptime. The AIOps…

Read More
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x