Как поместить пользовательские переменные в журналы ошибок PHP

Я хочу включить определенную информацию о сервере в журналы ошибок. Есть ли способ заставить PHP включить $_SERVER['SERVER_ADDR'] (или любая другая переменная) в записи журнала? Так, например, журнал будет:

[08-Apr-2015 16:58:33] 125.60.12.1 Неустранимая ошибка PHP: вызов undefined
функция a () в /index.php в строке 5

вместо

[08-Apr-2015 16:58:33] Неустранимая ошибка PHP: вызов неопределенной функции
a () в /index.php в строке 5

0

Решение

Обработчик ошибок

Лучший способ получить больше информации об ошибке — создать собственный обработчик ошибок.

В этом примере выводится стандартная информация об ошибке, а также все переменные, используемые в данный момент.

Эта конкретная функция будет содержать конфиденциальную информацию, поэтому мы добавили строку для удаления таких вещей, как пароли.

$dev=true;  //dev pc

function error_function($err_level,$err_msg,$err_file,$err_line,$err_context)
{
global $dev;
$err_stg="<br />
############################<br />
<b>Error level:</b> $err_level<br />
<b>Message:</b>     $err_msg<br />
<b>File:</b>        $err_file<br />
<b>On line:</b>     $err_line<br />
############################<br /><br />";

//convert array to string
$err_stg.=serialize($err_context);

//remove sensitive information
$pos=strpos($err_stg,'MYSQL_PASSWORD');
if($pos){ $err_stg=substr($err_stg,0,$pos).substr($err_stg,$pos+40); }

if($dev)  //if on dev pc echo error
{
echo $err_stg;
}
else //if live on site save error to file
{
error_log($err_stg,3,"error_file_secret.html");
}
}

Установите эту функцию как обработчик ошибок

set_error_handler("error_function",E_ALL);

Настройте эту функцию в соответствии с вашими потребностями.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]