Is it possible to create/extend a CakePHP Exception handler which shows the url the user tried to access which throws the exception?
Usually when I look into my error.log file I see something like this:
2012-08-01 13:39:20 Error: [MissingControllerException] Controller class UserController could not be found.
#0 /www/htdocs/w0081e0e/app/webroot/index.php(104): Dispatcher->dispatch(Object(CakeRequest), Object(CakeResponse))
#1 {main}
I have a working UsersController but I’m not sure which url the user tried to access which in return throw this error. It would help me to see the url in the error.log file. Is that possible? Would I have to create/extend an exception handling file?
Update:
Instead of writing my own ExceptionHandler I just updated the “handleException” function in “lib/Cake/Error/ErrorHandler.php”:
if (!empty($config['log'])) {
$message = sprintf("[%s] %s\n%s",
get_class($exception),
$exception->getMessage(),
$exception->getTraceAsString().' - http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']."\n"
);
CakeLog::write(LOG_ERR, $message);
}
I know that this is overwritten once I update my CakePHP Version but its a quick fix that works really fine for my situation.
You can write your own exception handlers. It’s pretty well documented at http://book.cakephp.org/2.0/en/development/exceptions.html#create-your-own-exception-handler-with-exception-handler
Anyway the URL seems to be like
http://something/user/something. The error saysUserControllercould not be found, which is true as you only have aUsersController(plural). If you just want to avoid this error it might be enough to find the file which creates a/user/URL.