Cara menggunakan php logging exceptions

When you start a new Laravel project, error and exception handling is already configured for you. The

$app->configureMonologUsing[function [$monolog] {

$monolog->pushHandler[...];

1 class is where all exceptions triggered by your application are logged and then rendered back to the user. We'll dive deeper into this class throughout this documentation.

For logging, Laravel utilizes the Monolog library, which provides support for a variety of powerful log handlers. Laravel configures several of these handlers for you, allowing you to choose between a single log file, rotating log files, or writing error information to the system log.

Configuration

Error Detail

The

$app->configureMonologUsing[function [$monolog] {

$monolog->pushHandler[...];

2 option in your

$app->configureMonologUsing[function [$monolog] {

$monolog->pushHandler[...];

3 configuration file determines how much information about an error is actually displayed to the user. By default, this option is set to respect the value of the

$app->configureMonologUsing[function [$monolog] {

$monolog->pushHandler[...];

4 environment variable, which is stored in your

$app->configureMonologUsing[function [$monolog] {

$monolog->pushHandler[...];

5 file.

For local development, you should set the

$app->configureMonologUsing[function [$monolog] {

$monolog->pushHandler[...];

4 environment variable to

$app->configureMonologUsing[function [$monolog] {

$monolog->pushHandler[...];

7. In your production environment, this value should always be

$app->configureMonologUsing[function [$monolog] {

$monolog->pushHandler[...];

8. If the value is set to

$app->configureMonologUsing[function [$monolog] {

$monolog->pushHandler[...];

7 in production, you risk exposing sensitive configuration values to your application's end users.

Log Storage

Out of the box, Laravel supports writing log information to

* Report or log an exception.

* This is a great spot to send exceptions to Sentry, Bugsnag, etc.

* @param \Exception $exception

public function report[Exception $exception]

if [$exception instanceof CustomException] {

return parent::report[$exception];

0 files,

* Report or log an exception.

* This is a great spot to send exceptions to Sentry, Bugsnag, etc.

* @param \Exception $exception

public function report[Exception $exception]

if [$exception instanceof CustomException] {

return parent::report[$exception];

1 files, the

* Report or log an exception.

* This is a great spot to send exceptions to Sentry, Bugsnag, etc.

* @param \Exception $exception

public function report[Exception $exception]

if [$exception instanceof CustomException] {

return parent::report[$exception];

2, and the

* Report or log an exception.

* This is a great spot to send exceptions to Sentry, Bugsnag, etc.

* @param \Exception $exception

public function report[Exception $exception]

if [$exception instanceof CustomException] {

return parent::report[$exception];

3. To configure which storage mechanism Laravel uses, you should modify the

* Report or log an exception.

* This is a great spot to send exceptions to Sentry, Bugsnag, etc.

* @param \Exception $exception

public function report[Exception $exception]

if [$exception instanceof CustomException] {

return parent::report[$exception];

4 option in your

$app->configureMonologUsing[function [$monolog] {

$monolog->pushHandler[...];

3 configuration file. For example, if you wish to use daily log files instead of a single file, you should set the

* Report or log an exception.

* This is a great spot to send exceptions to Sentry, Bugsnag, etc.

* @param \Exception $exception

public function report[Exception $exception]

if [$exception instanceof CustomException] {

return parent::report[$exception];

4 value in your

* Report or log an exception.

* This is a great spot to send exceptions to Sentry, Bugsnag, etc.

* @param \Exception $exception

public function report[Exception $exception]

if [$exception instanceof CustomException] {

return parent::report[$exception];

7 configuration file to

* Report or log an exception.

* This is a great spot to send exceptions to Sentry, Bugsnag, etc.

* @param \Exception $exception

public function report[Exception $exception]

if [$exception instanceof CustomException] {

return parent::report[$exception];

1:

Maximum Daily Log Files

When using the

* Report or log an exception.

* This is a great spot to send exceptions to Sentry, Bugsnag, etc.

* @param \Exception $exception

public function report[Exception $exception]

if [$exception instanceof CustomException] {

return parent::report[$exception];

1 log mode, Laravel will only retain five days of log files by default. If you want to adjust the number of retained files, you may add a

* A list of the exception types that should not be reported.

\Illuminate\Auth\AuthenticationException::class,

\Illuminate\Auth\Access\AuthorizationException::class,

\Symfony\Component\HttpKernel\Exception\HttpException::class,

\Illuminate\Database\Eloquent\ModelNotFoundException::class,

\Illuminate\Validation\ValidationException::class,

0 configuration value to your

* Report or log an exception.

* This is a great spot to send exceptions to Sentry, Bugsnag, etc.

* @param \Exception $exception

public function report[Exception $exception]

if [$exception instanceof CustomException] {

return parent::report[$exception];

7 configuration file:

Log Severity Levels

When using Monolog, log messages may have different levels of severity. By default, Laravel writes all log levels to storage. However, in your production environment, you may wish to configure the minimum severity that should be logged by adding the

* A list of the exception types that should not be reported.

\Illuminate\Auth\AuthenticationException::class,

\Illuminate\Auth\Access\AuthorizationException::class,

\Symfony\Component\HttpKernel\Exception\HttpException::class,

\Illuminate\Database\Eloquent\ModelNotFoundException::class,

\Illuminate\Validation\ValidationException::class,

2 option to your

* A list of the exception types that should not be reported.

\Illuminate\Auth\AuthenticationException::class,

\Illuminate\Auth\Access\AuthorizationException::class,

\Symfony\Component\HttpKernel\Exception\HttpException::class,

\Illuminate\Database\Eloquent\ModelNotFoundException::class,

\Illuminate\Validation\ValidationException::class,

3 configuration file.

Once this option has been configured, Laravel will log all levels greater than or equal to the specified severity. For example, a default

* A list of the exception types that should not be reported.

\Illuminate\Auth\AuthenticationException::class,

\Illuminate\Auth\Access\AuthorizationException::class,

\Symfony\Component\HttpKernel\Exception\HttpException::class,

\Illuminate\Database\Eloquent\ModelNotFoundException::class,

\Illuminate\Validation\ValidationException::class,

2 of

* A list of the exception types that should not be reported.

\Illuminate\Auth\AuthenticationException::class,

\Illuminate\Auth\Access\AuthorizationException::class,

\Symfony\Component\HttpKernel\Exception\HttpException::class,

\Illuminate\Database\Eloquent\ModelNotFoundException::class,

\Illuminate\Validation\ValidationException::class,

5 will log error, critical, alert, and emergency messages:

'log_level' => env['APP_LOG_LEVEL', 'error'],

{tip} Monolog recognizes the following severity levels - from least severe to most severe:

$app->configureMonologUsing[function [$monolog] {

$monolog->pushHandler[...];

2,

* A list of the exception types that should not be reported.

\Illuminate\Auth\AuthenticationException::class,

\Illuminate\Auth\Access\AuthorizationException::class,

\Symfony\Component\HttpKernel\Exception\HttpException::class,

\Illuminate\Database\Eloquent\ModelNotFoundException::class,

\Illuminate\Validation\ValidationException::class,

7,

* A list of the exception types that should not be reported.

\Illuminate\Auth\AuthenticationException::class,

\Illuminate\Auth\Access\AuthorizationException::class,

\Symfony\Component\HttpKernel\Exception\HttpException::class,

\Illuminate\Database\Eloquent\ModelNotFoundException::class,

\Illuminate\Validation\ValidationException::class,

8,

* A list of the exception types that should not be reported.

\Illuminate\Auth\AuthenticationException::class,

\Illuminate\Auth\Access\AuthorizationException::class,

\Symfony\Component\HttpKernel\Exception\HttpException::class,

\Illuminate\Database\Eloquent\ModelNotFoundException::class,

\Illuminate\Validation\ValidationException::class,

9,

* A list of the exception types that should not be reported.

\Illuminate\Auth\AuthenticationException::class,

\Illuminate\Auth\Access\AuthorizationException::class,

\Symfony\Component\HttpKernel\Exception\HttpException::class,

\Illuminate\Database\Eloquent\ModelNotFoundException::class,

\Illuminate\Validation\ValidationException::class,

5,

* Render an exception into an HTTP response.

* @param \Illuminate\Http\Request $request

* @param \Exception $exception

* @return \Illuminate\Http\Response

public function render[$request, Exception $exception]

if [$exception instanceof CustomException] {

return response[]->view['errors.custom', [], 500];

return parent::render[$request, $exception];

1,

* Render an exception into an HTTP response.

* @param \Illuminate\Http\Request $request

* @param \Exception $exception

* @return \Illuminate\Http\Response

public function render[$request, Exception $exception]

if [$exception instanceof CustomException] {

return response[]->view['errors.custom', [], 500];

return parent::render[$request, $exception];

2,

* Render an exception into an HTTP response.

* @param \Illuminate\Http\Request $request

* @param \Exception $exception

* @return \Illuminate\Http\Response

public function render[$request, Exception $exception]

if [$exception instanceof CustomException] {

return response[]->view['errors.custom', [], 500];

return parent::render[$request, $exception];

3.

Custom Monolog Configuration

If you would like to have complete control over how Monolog is configured for your application, you may use the application's

* Render an exception into an HTTP response.

* @param \Illuminate\Http\Request $request

* @param \Exception $exception

* @return \Illuminate\Http\Response

public function render[$request, Exception $exception]

if [$exception instanceof CustomException] {

return response[]->view['errors.custom', [], 500];

return parent::render[$request, $exception];

4 method. You should place a call to this method in your

* Render an exception into an HTTP response.

* @param \Illuminate\Http\Request $request

* @param \Exception $exception

* @return \Illuminate\Http\Response

public function render[$request, Exception $exception]

if [$exception instanceof CustomException] {

return response[]->view['errors.custom', [], 500];

return parent::render[$request, $exception];

5 file right before the

* Render an exception into an HTTP response.

* @param \Illuminate\Http\Request $request

* @param \Exception $exception

* @return \Illuminate\Http\Response

public function render[$request, Exception $exception]

if [$exception instanceof CustomException] {

return response[]->view['errors.custom', [], 500];

return parent::render[$request, $exception];

6 variable is returned by the file:

$app->configureMonologUsing[function [$monolog] {

$monolog->pushHandler[...];

The Exception Handler

The Report Method

All exceptions are handled by the

$app->configureMonologUsing[function [$monolog] {

$monolog->pushHandler[...];

1 class. This class contains two methods:

* Render an exception into an HTTP response.

* @param \Illuminate\Http\Request $request

* @param \Exception $exception

* @return \Illuminate\Http\Response

public function render[$request, Exception $exception]

if [$exception instanceof CustomException] {

return response[]->view['errors.custom', [], 500];

return parent::render[$request, $exception];

8 and

* Render an exception into an HTTP response.

* @param \Illuminate\Http\Request $request

* @param \Exception $exception

* @return \Illuminate\Http\Response

public function render[$request, Exception $exception]

if [$exception instanceof CustomException] {

return response[]->view['errors.custom', [], 500];

return parent::render[$request, $exception];

9. We'll examine each of these methods in detail. The

* Render an exception into an HTTP response.

* @param \Illuminate\Http\Request $request

* @param \Exception $exception

* @return \Illuminate\Http\Response

public function render[$request, Exception $exception]

if [$exception instanceof CustomException] {

return response[]->view['errors.custom', [], 500];

return parent::render[$request, $exception];

8 method is used to log exceptions or send them to an external service like Bugsnag or Sentry. By default, the

* Render an exception into an HTTP response.

* @param \Illuminate\Http\Request $request

* @param \Exception $exception

* @return \Illuminate\Http\Response

public function render[$request, Exception $exception]

if [$exception instanceof CustomException] {

return response[]->view['errors.custom', [], 500];

return parent::render[$request, $exception];

8 method simply passes the exception to the base class where the exception is logged. However, you are free to log exceptions however you wish.

For example, if you need to report different types of exceptions in different ways, you may use the PHP

abort[403, 'Unauthorized action.'];

2 comparison operator:

* Report or log an exception.

* This is a great spot to send exceptions to Sentry, Bugsnag, etc.

* @param \Exception $exception

public function report[Exception $exception]

if [$exception instanceof CustomException] {

return parent::report[$exception];

Ignoring Exceptions By Type

The

abort[403, 'Unauthorized action.'];

3 property of the exception handler contains an array of exception types that will not be logged. For example, exceptions resulting from 404 errors, as well as several other types of errors, are not written to your log files. You may add other exception types to this array as needed:

* A list of the exception types that should not be reported.

\Illuminate\Auth\AuthenticationException::class,

\Illuminate\Auth\Access\AuthorizationException::class,

\Symfony\Component\HttpKernel\Exception\HttpException::class,

\Illuminate\Database\Eloquent\ModelNotFoundException::class,

\Illuminate\Validation\ValidationException::class,

The Render Method

The

* Render an exception into an HTTP response.

* @param \Illuminate\Http\Request $request

* @param \Exception $exception

* @return \Illuminate\Http\Response

public function render[$request, Exception $exception]

if [$exception instanceof CustomException] {

return response[]->view['errors.custom', [], 500];

return parent::render[$request, $exception];

9 method is responsible for converting a given exception into an HTTP response that should be sent back to the browser. By default, the exception is passed to the base class which generates a response for you. However, you are free to check the exception type or return your own custom response:

* Render an exception into an HTTP response.

* @param \Illuminate\Http\Request $request

* @param \Exception $exception

* @return \Illuminate\Http\Response

public function render[$request, Exception $exception]

if [$exception instanceof CustomException] {

return response[]->view['errors.custom', [], 500];

return parent::render[$request, $exception];

HTTP Exceptions

Some exceptions describe HTTP error codes from the server. For example, this may be a "page not found" error [404], an "unauthorized error" [401] or even a developer generated 500 error. In order to generate such a response from anywhere in your application, you may use the

abort[403, 'Unauthorized action.'];

5 helper:

The

abort[403, 'Unauthorized action.'];

5 helper will immediately raise an exception which will be rendered by the exception handler. Optionally, you may provide the response text:

abort[403, 'Unauthorized action.'];

Custom HTTP Error Pages

Laravel makes it easy to display custom error pages for various HTTP status codes. For example, if you wish to customize the error page for 404 HTTP status codes, create a

abort[403, 'Unauthorized action.'];

7. This file will be served on all 404 errors generated by your application. The views within this directory should be named to match the HTTP status code they correspond to. The

abort[403, 'Unauthorized action.'];

8 instance raised by the

abort[403, 'Unauthorized action.'];

5 function will be passed to the view as an

{{ $exception->getMessage[] }}

0 variable:

{{ $exception->getMessage[] }}

Laravel provides a simple abstraction layer on top of the powerful Monolog library. By default, Laravel is configured to create a log file for your application in the

{{ $exception->getMessage[] }}

1 directory. You may write information to the logs using the

{{ $exception->getMessage[] }}

2 facade:

namespace App\Http\Controllers;

use Illuminate\Support\Facades\Log;

use App\Http\Controllers\Controller;

class UserController extends Controller

* Show the profile for the given user.

public function showProfile[$id]

Log::info['Showing user profile for user: '.$id];

return view['user.profile', ['user' => User::findOrFail[$id]]];

The logger provides the eight logging levels defined in RFC 5424: emergency, alert, critical, error, warning, notice, info and debug.

Log::emergency[$message];

Contextual Information

An array of contextual data may also be passed to the log methods. This contextual data will be formatted and displayed with the log message:

Log::info['User failed to login.', ['id' => $user->id]];

Accessing The Underlying Monolog Instance

Monolog has a variety of additional handlers you may use for logging. If needed, you may access the underlying Monolog instance being used by Laravel:

Bagaimana cara menampilkan pesan error pada PHP?

Cara Menampilkan Pesan Error untuk Debugging Program PHP.
Buka File Konfigurasi Server. Silahkan buka file konfigurasi server yang ada di /etc/php5/apache2/php.ini dengan teks editor. ... .
Ubah Nilai Konfigurasi ke Mode Development. Ubahlah nilai-nilai konfigurasi error-nya menjadi seperti berikut ini. ... .
3. Hidupkan Ulang Service..

Apa itu Exception pada PHP?

Exception secara bahasa berarti pengecualian. Sedangkan secara istilah di dalam PHP, ia adalah sebuah perubahan alur program dari kondisi normal ke kondisi tertentu [atau pengecualian tertentu] jika terjadi suatu error [exception].

Bài mới nhất

Chủ Đề