improved error handler, added exception handler
This commit is contained in:
parent
a18fe5c96f
commit
96a90b0b0c
@ -1,10 +1,11 @@
|
||||
<?php
|
||||
|
||||
// Run configuration
|
||||
|
||||
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_PID', true); // Use current process id as suffix for log file name in logs folder
|
||||
|
||||
|
||||
// Define base dir
|
||||
define('ManiaControlDir', __DIR__);
|
||||
|
||||
@ -20,8 +21,12 @@ if (!is_dir($logFileName)) {
|
||||
mkdir($logFileName);
|
||||
}
|
||||
$logFileName .= '/ManiaControl';
|
||||
if (LOG_NAME_USE_DATE) $logFileName .= '_' . date('Y-m-d');
|
||||
if (LOG_NAME_USE_PID) $logFileName .= '_' . getmypid();
|
||||
if (LOG_NAME_USE_DATE) {
|
||||
$logFileName .= '_' . date('Y-m-d');
|
||||
}
|
||||
if (LOG_NAME_USE_PID) {
|
||||
$logFileName .= '_' . getmypid();
|
||||
}
|
||||
$logFileName .= '.log';
|
||||
define('LOG_FILE', $logFileName);
|
||||
|
||||
@ -41,14 +46,16 @@ if (LOG_WRITE_CURRENT_FILE) {
|
||||
*/
|
||||
function logMessage($message) {
|
||||
$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);
|
||||
echo $message;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the prefix for the given error level
|
||||
*
|
||||
*
|
||||
* @param int $errorLevel
|
||||
* @return string
|
||||
*/
|
||||
@ -75,33 +82,53 @@ function getErrorTag($errorLevel) {
|
||||
}
|
||||
|
||||
// Register error handler
|
||||
set_error_handler(
|
||||
function ($errorNumber, $errorString, $errorFile, $errorLine) {
|
||||
if (error_reporting() == 0) {
|
||||
// Error suppressed
|
||||
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;
|
||||
}, -1);
|
||||
set_error_handler('errorHandler', -1);
|
||||
set_exception_handler('exceptionHandler');
|
||||
|
||||
/**
|
||||
* Error Handler
|
||||
*
|
||||
* @param $errorNumber
|
||||
* @param $errorString
|
||||
* @param $errorFile
|
||||
* @param $errorLine
|
||||
* @return bool
|
||||
*/
|
||||
function errorHandler($errorNumber, $errorString, $errorFile, $errorLine) {
|
||||
if (error_reporting() == 0) {
|
||||
// Error suppressed
|
||||
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
|
||||
spl_autoload_register(
|
||||
function ($className) {
|
||||
$classPath = str_replace('\\', DIRECTORY_SEPARATOR, $className);
|
||||
$classPath = preg_replace('/ManiaControl/', 'core', $classPath, 1);
|
||||
$filePath = ManiaControlDir . DIRECTORY_SEPARATOR . $classPath . '.php';
|
||||
if (file_exists($filePath)) {
|
||||
require_once $filePath;
|
||||
}
|
||||
});
|
||||
spl_autoload_register(function ($className) {
|
||||
$classPath = str_replace('\\', DIRECTORY_SEPARATOR, $className);
|
||||
$classPath = preg_replace('/ManiaControl/', 'core', $classPath, 1);
|
||||
$filePath = ManiaControlDir . DIRECTORY_SEPARATOR . $classPath . '.php';
|
||||
if (file_exists($filePath)) {
|
||||
require_once $filePath;
|
||||
}
|
||||
});
|
||||
|
||||
// Start ManiaControl
|
||||
$maniaControl = new \ManiaControl\ManiaControl();
|
||||
|
Loading…
Reference in New Issue
Block a user