Skip to content

Commit

Permalink
Add support for custom console error handling
Browse files Browse the repository at this point in the history
Both errors and exceptions can be configured for the console
at the application layer now.

Fixes #2696
  • Loading branch information
markstory committed Mar 23, 2012
1 parent 69e63b1 commit 34e1afd
Showing 1 changed file with 26 additions and 4 deletions.
30 changes: 26 additions & 4 deletions lib/Cake/Console/ShellDispatcher.php
Original file line number Diff line number Diff line change
Expand Up @@ -134,10 +134,8 @@ protected function _bootstrap() {
include_once CAKE_CORE_INCLUDE_PATH . DS . 'Cake' . DS . 'Console' . DS . 'Templates' . DS . 'skel' . DS . 'Config' . DS . 'core.php';
App::build();
}
require_once CAKE . 'Console' . DS . 'ConsoleErrorHandler.php';
$ErrorHandler = new ConsoleErrorHandler();
set_exception_handler(array($ErrorHandler, 'handleException'));
set_error_handler(array($ErrorHandler, 'handleError'), Configure::read('Error.level'));

$this->setErrorHandlers();

if (!defined('FULL_BASE_URL')) {
define('FULL_BASE_URL', 'http://localhost');
Expand All @@ -146,6 +144,30 @@ protected function _bootstrap() {
return true;
}

/**
* Set the error/exception handlers for the console
* based on the `Error.consoleHandler`, and `Exception.consoleHandler` values
* if they are set. If they are not set, the default ConsoleErrorHandler will be
* used.
*
* @return void
*/
public function setErrorHandlers() {
App::uses('ConsoleErrorHandler', 'Console');
$error = Configure::read('Error');
$exception = Configure::read('Exception');

$errorHandler = new ConsoleErrorHandler();
if (empty($error['consoleHandler'])) {
$error['consoleHandler'] = array($errorHandler, 'handleError');
}
if (empty($exception['consoleHandler'])) {
$exception['consoleHandler'] = array($errorHandler, 'handleException');
}
set_exception_handler($exception['consoleHandler']);
set_error_handler($error['consoleHandler'], Configure::read('Error.level'));
}

/**
* Dispatches a CLI request
*
Expand Down

0 comments on commit 34e1afd

Please sign in to comment.