Как регистрировать ошибки и предупреждения в файле?

Как включить все ошибки и предупреждения и записать их в файл, но настроить все это в скрипте (ничего не изменяя в php.ini). Я хочу определить имя файла и так, чтобы все ошибки и предупреждения вошли в него.

Solutions Collecting From Web of "Как регистрировать ошибки и предупреждения в файле?"

Используйте следующий код:

ini_set("log_errors", 1); ini_set("error_log", "/tmp/php-error.log"); error_log( "Hello, errors!" ); 

Затем просмотрите файл:

 tail -f /tmp/php-error.log 

Или обновите php.ini как описано в этой записи в блоге с 2008 года.

Видеть

  • error_log – Отправить сообщение об ошибке где-нибудь

пример

 error_log("You messed up!", 3, "/var/tmp/my-errors.log"); 

Вы можете настроить обработку ошибок с помощью собственных обработчиков ошибок, чтобы вызывать эту функцию для вас всякий раз, когда возникает ошибка или предупреждение или что-то, что вам нужно для регистрации. Дополнительную информацию см. В разделе Обработка ошибок главы в Руководстве по PHP

добавьте этот код в .htaccess (если у вас нет доступа к php.ini )

 <IfModule mod_php5.c> php_flag log_errors on php_value error_log ./path_to_MY_PHP_ERRORS.log </IfModule> 

ps это для серверов типа Apache.

Взгляните на log_errors конфигурации log_errors в php.ini. Кажется, вы делаете именно то, что хотите. Я думаю, вы можете использовать параметр error_log чтобы установить собственный файл ведения журнала.

Если директиве log_errors установлено значение « On , любые ошибки, о которых сообщает PHP, будут записываться в журнал сервера или файл, указанный с помощью error_log . Вы также можете установить эти параметры с помощью ini_set , если вам нужно.

(Обратите внимание, что display_errors должен быть отключен в php.ini, если этот параметр включен)

Это моя личная короткая функция

 # logging /* [2017-03-20 3:35:43] [INFO] [file.php] Here we are [2017-03-20 3:35:43] [ERROR] [file.php] Not good [2017-03-20 3:35:43] [DEBUG] [file.php] Regex empty mylog ('hallo') -> INFO mylog ('fail', 'e') -> ERROR mylog ('next', 'd') -> DEBUG mylog ('next', 'd', 'debug.log') -> DEBUG file debug.log */ function mylog($text, $level='i', $file='logs') { switch (strtolower($level)) { case 'e': case 'error': $level='ERROR'; break; case 'i': case 'info': $level='INFO'; break; case 'd': case 'debug': $level='DEBUG'; break; default: $level='INFO'; } error_log(date("[Ymd H:i:s]")."\t[".$level."]\t[".basename(__FILE__)."]\t".$text."\n", 3, $file); } 

Кроме того, для этого вам потребуется директива «AllowOverride Options». (Apache 2.2.15)

Просто введите эти коды в начало вашего файла PHP / index:

 error_reporting(E_ALL); // Error engine ini_set('display_errors', TRUE); // Error display ini_set('log_errors', TRUE); // Error logging ini_set('error_log', 'your/path/to/errors.log'); // Logging file ini_set('log_errors_max_len', 1024); // Logging file size