109 lines
4.0 KiB
PHP
109 lines
4.0 KiB
PHP
<?php
|
|
|
|
namespace Config;
|
|
|
|
use CodeIgniter\Config\BaseConfig;
|
|
use CodeIgniter\Debug\ExceptionHandler;
|
|
use CodeIgniter\Debug\ExceptionHandlerInterface;
|
|
use Psr\Log\LogLevel;
|
|
use Throwable;
|
|
|
|
/**
|
|
* Setup how the exception handler works.
|
|
*/
|
|
class Exceptions extends BaseConfig
|
|
{
|
|
/**
|
|
* --------------------------------------------------------------------------
|
|
* LOG EXCEPTIONS?
|
|
* --------------------------------------------------------------------------
|
|
* If true, then exceptions will be logged
|
|
* through Services::Log.
|
|
*
|
|
* Default: true
|
|
*/
|
|
public bool $log = true;
|
|
|
|
/**
|
|
* --------------------------------------------------------------------------
|
|
* DO NOT LOG STATUS CODES
|
|
* --------------------------------------------------------------------------
|
|
* Any status codes here will NOT be logged if logging is turned on.
|
|
* By default, only 404 (Page Not Found) exceptions are ignored.
|
|
*
|
|
* @var list<int>
|
|
*/
|
|
public array $ignoreCodes = [404];
|
|
|
|
/**
|
|
* --------------------------------------------------------------------------
|
|
* Error Views Path
|
|
* --------------------------------------------------------------------------
|
|
* This is the path to the directory that contains the 'cli' and 'html'
|
|
* directories that hold the views used to generate errors.
|
|
*
|
|
* Default: APPPATH.'Views/errors'
|
|
*/
|
|
public string $errorViewPath = APPPATH . 'Views/errors';
|
|
|
|
/**
|
|
* --------------------------------------------------------------------------
|
|
* HIDE FROM DEBUG TRACE
|
|
* --------------------------------------------------------------------------
|
|
* Any data that you would like to hide from the debug trace.
|
|
* In order to specify 2 levels, use "/" to separate.
|
|
* ex. ['server', 'setup/password', 'secret_token']
|
|
*
|
|
* @var list<string>
|
|
*/
|
|
public array $sensitiveDataInTrace = [];
|
|
|
|
/**
|
|
* --------------------------------------------------------------------------
|
|
* LOG DEPRECATIONS INSTEAD OF THROWING?
|
|
* --------------------------------------------------------------------------
|
|
* By default, CodeIgniter converts deprecations into exceptions. Also,
|
|
* starting in PHP 8.1 will cause a lot of deprecated usage warnings.
|
|
* Use this option to temporarily cease the warnings and instead log those.
|
|
* This option also works for user deprecations.
|
|
*/
|
|
public bool $logDeprecations = true;
|
|
|
|
/**
|
|
* --------------------------------------------------------------------------
|
|
* LOG LEVEL THRESHOLD FOR DEPRECATIONS
|
|
* --------------------------------------------------------------------------
|
|
* If `$logDeprecations` is set to `true`, this sets the log level
|
|
* to which the deprecation will be logged. This should be one of the log
|
|
* levels recognized by PSR-3.
|
|
*
|
|
* The related `Config\Logger::$threshold` should be adjusted, if needed,
|
|
* to capture logging the deprecations.
|
|
*/
|
|
public string $deprecationLogLevel = LogLevel::WARNING;
|
|
|
|
/*
|
|
* DEFINE THE HANDLERS USED
|
|
* --------------------------------------------------------------------------
|
|
* Given the HTTP status code, returns exception handler that
|
|
* should be used to deal with this error. By default, it will run CodeIgniter's
|
|
* default handler and display the error information in the expected format
|
|
* for CLI, HTTP, or AJAX requests, as determined by is_cli() and the expected
|
|
* response format.
|
|
*
|
|
* Custom handlers can be returned if you want to handle one or more specific
|
|
* error codes yourself like:
|
|
*
|
|
* if (in_array($statusCode, [400, 404, 500])) {
|
|
* return new \App\Libraries\MyExceptionHandler();
|
|
* }
|
|
* if ($exception instanceOf PageNotFoundException) {
|
|
* return new \App\Libraries\MyExceptionHandler();
|
|
* }
|
|
*/
|
|
public function handler(int $statusCode, Throwable $exception): ExceptionHandlerInterface
|
|
{
|
|
return new ExceptionHandler($this);
|
|
}
|
|
}
|