improved error handler, added exception handler
This commit is contained in:
parent
a18fe5c96f
commit
96a90b0b0c
@ -1,10 +1,11 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
// Run configuration
|
// Run configuration
|
||||||
|
|
||||||
define('LOG_WRITE_CURRENT_FILE', 'ManiaControl.log'); // Write current log to extra file in base dir
|
define('LOG_WRITE_CURRENT_FILE', 'ManiaControl.log'); // Write current log to extra file in base dir
|
||||||
define('LOG_NAME_USE_DATE', true); // Use current date as suffix for log file name in logs folder
|
define('LOG_NAME_USE_DATE', true); // Use current date as suffix for log file name in logs folder
|
||||||
define('LOG_NAME_USE_PID', true); // Use current process id as suffix for log file name in logs folder
|
define('LOG_NAME_USE_PID', true); // Use current process id as suffix for log file name in logs folder
|
||||||
|
|
||||||
// Define base dir
|
// Define base dir
|
||||||
define('ManiaControlDir', __DIR__);
|
define('ManiaControlDir', __DIR__);
|
||||||
|
|
||||||
@ -20,8 +21,12 @@ if (!is_dir($logFileName)) {
|
|||||||
mkdir($logFileName);
|
mkdir($logFileName);
|
||||||
}
|
}
|
||||||
$logFileName .= '/ManiaControl';
|
$logFileName .= '/ManiaControl';
|
||||||
if (LOG_NAME_USE_DATE) $logFileName .= '_' . date('Y-m-d');
|
if (LOG_NAME_USE_DATE) {
|
||||||
if (LOG_NAME_USE_PID) $logFileName .= '_' . getmypid();
|
$logFileName .= '_' . date('Y-m-d');
|
||||||
|
}
|
||||||
|
if (LOG_NAME_USE_PID) {
|
||||||
|
$logFileName .= '_' . getmypid();
|
||||||
|
}
|
||||||
$logFileName .= '.log';
|
$logFileName .= '.log';
|
||||||
define('LOG_FILE', $logFileName);
|
define('LOG_FILE', $logFileName);
|
||||||
|
|
||||||
@ -41,14 +46,16 @@ if (LOG_WRITE_CURRENT_FILE) {
|
|||||||
*/
|
*/
|
||||||
function logMessage($message) {
|
function logMessage($message) {
|
||||||
$message .= PHP_EOL;
|
$message .= PHP_EOL;
|
||||||
if (defined('LOG_CURRENT_FILE')) file_put_contents(LOG_CURRENT_FILE, $message, FILE_APPEND);
|
if (defined('LOG_CURRENT_FILE')) {
|
||||||
|
file_put_contents(LOG_CURRENT_FILE, $message, FILE_APPEND);
|
||||||
|
}
|
||||||
file_put_contents(LOG_FILE, $message, FILE_APPEND);
|
file_put_contents(LOG_FILE, $message, FILE_APPEND);
|
||||||
echo $message;
|
echo $message;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the prefix for the given error level
|
* Get the prefix for the given error level
|
||||||
*
|
*
|
||||||
* @param int $errorLevel
|
* @param int $errorLevel
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
@ -75,33 +82,53 @@ function getErrorTag($errorLevel) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Register error handler
|
// Register error handler
|
||||||
set_error_handler(
|
set_error_handler('errorHandler', -1);
|
||||||
function ($errorNumber, $errorString, $errorFile, $errorLine) {
|
set_exception_handler('exceptionHandler');
|
||||||
if (error_reporting() == 0) {
|
|
||||||
// Error suppressed
|
/**
|
||||||
return false;
|
* Error Handler
|
||||||
}
|
*
|
||||||
// Log error
|
* @param $errorNumber
|
||||||
$errorTag = getErrorTag($errorNumber);
|
* @param $errorString
|
||||||
$message = "{$errorTag}: {$errorString} in File '{$errorFile}' on Line {$errorLine}!";
|
* @param $errorFile
|
||||||
logMessage($message);
|
* @param $errorLine
|
||||||
if ($errorNumber == E_ERROR || $errorNumber == E_USER_ERROR) {
|
* @return bool
|
||||||
logMessage('Stopping execution...');
|
*/
|
||||||
exit();
|
function errorHandler($errorNumber, $errorString, $errorFile, $errorLine) {
|
||||||
}
|
if (error_reporting() == 0) {
|
||||||
return false;
|
// Error suppressed
|
||||||
}, -1);
|
return false;
|
||||||
|
}
|
||||||
|
// Log error
|
||||||
|
$errorTag = getErrorTag($errorNumber);
|
||||||
|
$message = "{$errorTag}: {$errorString} in File '{$errorFile}' on Line {$errorLine}!";
|
||||||
|
logMessage($message);
|
||||||
|
if ($errorNumber == E_ERROR || $errorNumber == E_USER_ERROR) {
|
||||||
|
logMessage('Stopping execution...');
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Exception Handler
|
||||||
|
*
|
||||||
|
* @param Exception $ex
|
||||||
|
*/
|
||||||
|
function exceptionHandler(Exception $ex) {
|
||||||
|
$message = "[ManiaControl EXCEPTION]: {$ex->getMessage()} Trace: {$ex->getTraceAsString()}!";
|
||||||
|
logMessage($message);
|
||||||
|
}
|
||||||
|
|
||||||
// Autoload Function that loads ManiaControl Class Files on Demand
|
// Autoload Function that loads ManiaControl Class Files on Demand
|
||||||
spl_autoload_register(
|
spl_autoload_register(function ($className) {
|
||||||
function ($className) {
|
$classPath = str_replace('\\', DIRECTORY_SEPARATOR, $className);
|
||||||
$classPath = str_replace('\\', DIRECTORY_SEPARATOR, $className);
|
$classPath = preg_replace('/ManiaControl/', 'core', $classPath, 1);
|
||||||
$classPath = preg_replace('/ManiaControl/', 'core', $classPath, 1);
|
$filePath = ManiaControlDir . DIRECTORY_SEPARATOR . $classPath . '.php';
|
||||||
$filePath = ManiaControlDir . DIRECTORY_SEPARATOR . $classPath . '.php';
|
if (file_exists($filePath)) {
|
||||||
if (file_exists($filePath)) {
|
require_once $filePath;
|
||||||
require_once $filePath;
|
}
|
||||||
}
|
});
|
||||||
});
|
|
||||||
|
|
||||||
// Start ManiaControl
|
// Start ManiaControl
|
||||||
$maniaControl = new \ManiaControl\ManiaControl();
|
$maniaControl = new \ManiaControl\ManiaControl();
|
||||||
|
Loading…
Reference in New Issue
Block a user