Я работаю над регистрацией ошибок в php. Я создаю пользовательский обработчик ошибок, регистрирую ошибку и сохраняю ее в БД. Есть несколько типов ошибок, которые я не могу войти.
Мой код обработчика ошибок …
<?php/**
* Parameters:
* $errno: Error level
* $errstr: Error message
* $errfile: File in which the error was raised
* $errline: Line at which the error occurred
*/
function my_error_handler($errno, $errstr, $errfile, $errline)
{
switch ($errno) {
case E_USER_ERROR:
// Send an e-mail to the administrator
// error_log("Error: $errstr \n Fatal error on line $errline in file $errfile \n", DEST_EMAIL, ADMIN_EMAIL);
echo "Error: $errstr \n on line $errline in file $errfile";
//stack trace
$host='mysql:host=localhost;dbname=logs';
$user='root';
$password='';
$con=new PDO($host,$user,$password);
$trace=json_encode(debug_backtrace());
$qry=$con->prepare("insert into error_log (error_type,error_message,error_file,error_line,stack_trace) values('".$errno."','".$errstr."','".$errfile."','".$errline."','".$trace."')");
$qry->execute();
// Write the error to our log file
// error_log("Error: $errstr \n Fatal error on line $errline in file $errfile \n", DEST_LOGFILE, LOG_FILE);
echo "<br>";
break;
case E_USER_WARNING:
// Write the error to our log file
//error_log("Warning: $errstr \n in $errfile on line $errline \n", DEST_LOGFILE, LOG_FILE);
echo "$errstr \n in $errfile on line $errline \n";
//stack trace
$host='mysql:host=localhost;dbname=logs';
$user='root';
$password='';
$con=new PDO($host,$user,$password);
$trace=json_encode(debug_backtrace());
$qry=$con->prepare("insert into error_log (error_type,error_message,error_file,error_line,stack_trace) values('".$errno."','".$errstr."','".$errfile."','".$errline."','".$trace."')");
$qry->execute();
case E_USER_NOTICE:
// Write the error to our log file
//error_log("Notice: $errstr \n in $errfile on line $errline \n", DEST_LOGFILE, LOG_FILE);
echo "$errstr \n in $errfile on line $errline \n";
//stack trace
$host='mysql:host=localhost;dbname=logs';
$user='root';
$password='';
$con=new PDO($host,$user,$password);
$trace=json_encode(debug_backtrace());
$qry=$con->prepare("insert into error_log (error_type,error_message,error_file,error_line,stack_trace) values('".$errno."','".$errstr."','".$errfile."','".$errline."','".$trace."')");
$qry->execute();
echo "<br>";
break;
default:
// Write the error to our log file
//error_log("Unknown error [#$errno]: $errstr \n in $errfile on line $errline \n", DEST_LOGFILE, LOG_FILE);
break;
}
// Don't execute PHP's internal error handler
return TRUE;
}// Use set_error_handler() to tell PHP to use our method
$old_error_handler = set_error_handler("my_error_handler");
?>
Ошибки Я хочу Журнал:
trigger_error("Core Error",E_CORE_ERROR);
trigger_error("Core Warning",E_CORE_WARNING);
trigger_error("Compile Error",E_COMPILE_ERROR);
trigger_error("Compile Warning",E_COMPILE_WARNING);
trigger_error("Strict Error",E_STRICT);
trigger_error("Recoverable Error", E_RECOVERABLE_ERROR);
trigger_error("Depreciated Error",E_DEPRECATED);
trigger_error("parse error",E_PARSE);
trigger_error("Error",E_ERROR);
Я хочу регистрировать все вышеупомянутые ошибки, например, когда чего-то не хватает в коде, таком как точка с запятой и т. Д., Затем мы получили синтаксическую ошибку и т. Д., Поэтому я хочу регистрировать все эти ошибки ….
Я много искал, но не смог найти решение, которое наилучшим образом соответствует моим потребностям, и в большинстве мест он говорит, что эти ошибки не могут быть зарегистрированы с помощью специального обработчика ошибок, но я уверен, что эти ошибки могут быть зарегистрированы, потому что это также вошли, когда мы проверяем это php_error_log файл, поэтому я хочу, чтобы WAY зарегистрировал его, используя пользовательский обработчик ошибок …
Любая помощь будет оценена.
Пожалуйста, не комментируйте или не голосуйте против вопроса из-за кода, который я
вставьте сюда, этот код находится в стадии разработки, и я не сделал
очистить, обезопасить это, только пост в соответствии / связанных с проблемой.
Задача ещё не решена.
Других решений пока нет …