1
0
mirror of https://github.com/monstra-cms/monstra.git synced 2025-08-04 12:17:42 +02:00

Gelato: ErrorHandler improvments for PRODUCTION Environment.

This commit is contained in:
Awilum
2013-01-17 23:59:09 +02:00
parent 0f47fd5d50
commit b9c2967b18
2 changed files with 37 additions and 9 deletions

View File

@@ -84,7 +84,31 @@ class ErrorHandler
{ {
// If isset error_reporting and $code then throw new error exception // If isset error_reporting and $code then throw new error exception
if ((error_reporting() & $code) !== 0) { if ((error_reporting() & $code) !== 0) {
throw new ErrorException($message, $code, 0, $file, $line);
/**
* Dont thow NOTICE exception for PRODUCTION Environment. Just write to log.
*/
if (GELATO_DISPLAY_DEVELOPMENT == false && $code == 8) {
// Get exception info
$error['code'] = $code;
$error['message'] = $message;
$error['file'] = $file;
$error['line'] = $line;
$error['type'] = 'ErrorException: ';
$codes = array (
E_USER_NOTICE => 'Notice',
);
$error['type'] .= in_array($error['code'], array_keys($codes)) ? $codes[$error['code']] : 'Unknown Error';
// Write to log
Log::write("{$error['type']}: {$error['message']} in {$error['file']} at line {$error['line']}");
} else {
throw new ErrorException($message, $code, 0, $file, $line);
}
} }
// Don't execute PHP internal error handler // Don't execute PHP internal error handler
@@ -210,24 +234,21 @@ class ErrorHandler
public static function exception($exception) public static function exception($exception)
{ {
try { try {
// Empty output buffers
// Empty output buffers
while(ob_get_level() > 0) ob_end_clean(); while(ob_get_level() > 0) ob_end_clean();
// Get exception info // Get exception info
$error['code'] = $exception->getCode(); $error['code'] = $exception->getCode();
$error['message'] = $exception->getMessage(); $error['message'] = $exception->getMessage();
$error['file'] = $exception->getFile(); $error['file'] = $exception->getFile();
$error['line'] = $exception->getLine(); $error['line'] = $exception->getLine();
// Determine error type // Determine error type
if ($exception instanceof ErrorException) { if ($exception instanceof ErrorException) {
$error['type'] = 'ErrorException: '; $error['type'] = 'ErrorException: ';
$codes = array $codes = array (
(
E_ERROR => 'Fatal Error', E_ERROR => 'Fatal Error',
E_PARSE => 'Parse Error', E_PARSE => 'Parse Error',
E_COMPILE_ERROR => 'Compile Error', E_COMPILE_ERROR => 'Compile Error',
@@ -254,7 +275,8 @@ class ErrorHandler
// Send headers and output // Send headers and output
@header('Content-Type: text/html; charset=UTF-8'); @header('Content-Type: text/html; charset=UTF-8');
if (GELATO_DISPLAY_ERRORS) { if (GELATO_DISPLAY_DEVELOPMENT) {
$error['backtrace'] = $exception->getTrace(); $error['backtrace'] = $exception->getTrace();
if ($exception instanceof ErrorException) { if ($exception instanceof ErrorException) {
@@ -266,11 +288,17 @@ class ErrorHandler
Response::status(500); Response::status(500);
include 'Resources/Views/Errors/exception.php'; include 'Resources/Views/Errors/exception.php';
} else { } else {
Response::status(500); Response::status(500);
include 'Resources/Views/Errors/production.php'; include 'Resources/Views/Errors/production.php';
} }
} catch (Exception $e) { } catch (Exception $e) {
// Empty output buffers
while(ob_get_level() > 0) ob_end_clean(); while(ob_get_level() > 0) ob_end_clean();
echo $e->getMessage() . ' in ' . $e->getFile() . ' (line ' . $e->getLine() . ').'; echo $e->getMessage() . ' in ' . $e->getFile() . ' (line ' . $e->getLine() . ').';

View File

@@ -23,8 +23,8 @@ define('GELATO_VERSION', '1.0.0');
/** /**
* Display Gelato Errors or not ? * Display Gelato Errors or not ?
*/ */
if ( ! defined('GELATO_DISPLAY_ERRORS')) { if ( ! defined('GELATO_DISPLAY_DEVELOPMENT')) {
define('GELATO_DISPLAY_ERRORS', true); define('GELATO_DISPLAY_DEVELOPMENT', true);
} }
/** /**