Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Improve messages logged for exceptions

  • Loading branch information...
commit d8551c49e57b6a724fd5e4515555551392583dca 1 parent 676872d
ADmad ADmad authored
34 lib/Cake/Error/ErrorHandler.php
View
@@ -22,6 +22,7 @@
App::uses('Debugger', 'Utility');
App::uses('CakeLog', 'Log');
App::uses('ExceptionRenderer', 'Error');
+App::uses('Router', 'Routing');
/**
*
@@ -109,12 +110,7 @@ class ErrorHandler {
public static function handleException(Exception $exception) {
$config = Configure::read('Exception');
if (!empty($config['log'])) {
- $message = sprintf("[%s] %s\n%s",
- get_class($exception),
- $exception->getMessage(),
- $exception->getTraceAsString()
- );
- CakeLog::write(LOG_ERR, $message);
+ CakeLog::write(LOG_ERR, self::_getMessage($exception));
}
$renderer = $config['renderer'];
if ($renderer !== 'ExceptionRenderer') {
@@ -137,6 +133,32 @@ public static function handleException(Exception $exception) {
}
/**
+ * Generates a formatted error message
+ * @param Exception $exception Exception instance
+ * @return string Formatted message
+ */
+ protected function _getMessage($exception) {
+ $message = sprintf("[%s] %s",
+ get_class($exception),
+ $exception->getMessage()
+ );
+ if (method_exists($exception, 'getAttributes')) {
+ $attributes = $exception->getAttributes();
+ if ($attributes) {
+ $message .= "\nException Attributes: " . var_export($exception->getAttributes(), true);
+ }
+ }
+ if (php_sapi_name() != 'cli') {
+ $request = Router::getRequest();
+ if ($request) {
+ $message .= "\nRequest URL: " . $request->here();
+ }
+ }
+ $message .= "\nStack Trace:\n" . $exception->getTraceAsString();
+ return $message;
+ }
+
+/**
* Set as the default error handler by CakePHP. Use Configure::write('Error.handler', $callback), to use your own
* error handling methods. This function will use Debugger to display errors when debug > 0. And
* will log errors to CakeLog, when debug == 0.
2  lib/Cake/Test/Case/Error/ErrorHandlerTest.php
View
@@ -224,7 +224,7 @@ public function testHandleExceptionLog() {
$log = file(LOGS . 'error.log');
$this->assertRegExp('/\[NotFoundException\] Kaboom!/', $log[0], 'message missing.');
- $this->assertRegExp('/\#0.*ErrorHandlerTest->testHandleExceptionLog/', $log[1], 'Stack trace missing.');
+ $this->assertRegExp('/\#0.*ErrorHandlerTest->testHandleExceptionLog/', $log[2], 'Stack trace missing.');
}
/**
Please sign in to comment.
Something went wrong with that request. Please try again.