mirror of
https://github.com/kamilwylegala/cakephp2-php8.git
synced 2024-11-15 03:18:26 +00:00
Adding exception logging configuration setting. Allows uncaught exceptions to be logged.
Implementing logging, and adding a test case.
This commit is contained in:
parent
af4447d55d
commit
f2f3f13c75
3 changed files with 40 additions and 5 deletions
|
@ -58,9 +58,16 @@
|
|||
* ErrorHandler::handleException() is used. It will display a HTML page for the exception, and
|
||||
* while debug > 0, framework errors like Missing Controller will be displayed. When debug = 0,
|
||||
* framework errors will be coerced into generic HTTP errors.
|
||||
*
|
||||
* Options:
|
||||
*
|
||||
* - `handler` - callback - The callback to handle exceptions. You can set this to any callback type,
|
||||
* including anonymous functions.
|
||||
* - `log` - boolean - Should Exceptions be logged?
|
||||
*/
|
||||
Configure::write('Exception', array(
|
||||
'handler' => 'ErrorHandler::handleException'
|
||||
'handler' => 'ErrorHandler::handleException',
|
||||
'log' => true
|
||||
));
|
||||
|
||||
/**
|
||||
|
|
|
@ -72,6 +72,12 @@ class ErrorHandler {
|
|||
$AppError = new AppError($exception);
|
||||
return $AppError->render();
|
||||
}
|
||||
if (Configure::read('Exception.log')) {
|
||||
if (!class_exists('CakeLog')) {
|
||||
require LIBS . 'cake_log.php';
|
||||
}
|
||||
CakeLog::write(LOG_ERR, '[' . get_class($exception) . '] ' . $exception->getMessage());
|
||||
}
|
||||
$error = new ExceptionRenderer($exception);
|
||||
$error->render();
|
||||
}
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
* @license MIT License (http://www.opensource.org/licenses/mit-license.php)
|
||||
*/
|
||||
|
||||
App::import('Core', 'ErrorHandler');
|
||||
App::import('Core', array('ErrorHandler', 'Controller', 'Router'));
|
||||
|
||||
/**
|
||||
* ErrorHandlerTest class
|
||||
|
@ -145,9 +145,7 @@ class ErrorHandlerTest extends CakeTestCase {
|
|||
if ($this->skipIf(file_exists(APP . 'app_error.php'), 'App error exists cannot run.')) {
|
||||
return;
|
||||
}
|
||||
if ($this->skipIf(PHP_SAPI == 'cli', 'This integration test can not be run in cli.')) {
|
||||
return;
|
||||
}
|
||||
|
||||
$error = new NotFoundException('Kaboom!');
|
||||
ob_start();
|
||||
ErrorHandler::handleException($error);
|
||||
|
@ -155,4 +153,28 @@ class ErrorHandlerTest extends CakeTestCase {
|
|||
$this->assertPattern('/Kaboom!/', $result, 'message missing.');
|
||||
}
|
||||
|
||||
/**
|
||||
* test handleException generating a page.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function testHandleExceptionLog() {
|
||||
if ($this->skipIf(file_exists(APP . 'app_error.php'), 'App error exists cannot run.')) {
|
||||
return;
|
||||
}
|
||||
if (file_exists(LOGS . 'error.log')) {
|
||||
unlink(LOGS . 'error.log');
|
||||
}
|
||||
Configure::write('Exception.log', true);
|
||||
$error = new NotFoundException('Kaboom!');
|
||||
|
||||
ob_start();
|
||||
ErrorHandler::handleException($error);
|
||||
$result = ob_get_clean();
|
||||
$this->assertPattern('/Kaboom!/', $result, 'message missing.');
|
||||
|
||||
$log = file(LOGS . 'error.log');
|
||||
$this->assertPattern('/\[NotFoundException\] Kaboom!/', $log[0], 'message missing.');
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue