Логирование в PHP

Под логированием в PHP подразумевается то, о каких типах ошибок будет сообщать вам ваше веб-приложение/сайт/php-скрипт и каким образом.

Существует 2 (3) основных способа получения ошибок от приложения:

  1. Вывод этих ошибок непосредственно на экран
  2. Запись этих ошибок в специальный лог-файл
  3. или же сразу оба варианта: вывод этих ошибок на экран и запись их в специальный лог-файл

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

Настройки для логирования ошибок

  1. error_reporting — это самый главный параметр. Он отвечает за то, сообщения об ошибках каких типов будут отображаться/писаться в лог-файл.Я считаю, что тут существует только 2 опции, которые возможно использовать:
    • -1 (или E_ALL) — сообщается обо всех типах ошибок;
    • 0 — не сообщается ни о каких типах ошибок

    Я рекомендую использовать исключительно -1 (или E_ALL).
    Т.к. приложение не должно иметь никаких ошибок, в принципе. Эту опцию можно задать через конфигурационный файл в php.ini или же прямо в php-скрипте посредством вызова функции error_reporting:

    error_reporting(-1);
    error_reporting(E_ALL);
    

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

  2. display_errors — этот параметр отвечает за непосредственный показ ошибок на экране после того, как она, собственно, произошла. Данный параметр может иметь значение 0 или 1 либо On / Off. Т.е. либо показывать ошибки на экране, либо нет.
  3. display_startup_errors — эта опция отвечает за показ ошибок, произошедших после запуска PHP. Например, если в конфигурационном файле есть синтаксическая ошибка, то информация о ней будет показана. Данный параметр может иметь значение 0 или 1 либо On / Off.
  4. log_errors — данная директива отвечает за то, чтобы записывать сообщения об ошибках в лог-файл. Данный параметр может иметь значение 0 или 1 либо On / Off. Т.е. записывать ошибки в лог или же нет.
  5. error_log — данная настройка отвечает за путь к файлу (лог-файлу), в который будут записываться все произошедшие ошибки приложения
  6. html_errors — эта же опция отвечает за формат отображения ошибок приложения. Если задана как 1 или On, то ошибка будет показана при помощи HTML’а, т.е. будет trace происхождения ошибки и всё будет достаточно информативно и красочно. Если же значение этой настройки задано как 0 или Off, то ошибки будут отображаться в виде обычного текста в виде небольшого числа строк.

 

1. Настройки для отображения ошибок на экране


error_reporting(-1); // ini_set('error_reporting', -1);
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
ini_set('html_errors', 1);
ini_set('log_errors', 0);

2. Настройки для записи ошибок в лог-файл


error_reporting(-1); // ini_set('error_reporting', -1);
ini_set('display_errors', 0);
ini_set('display_startup_errors', 0);
ini_set('log_errors', 1);
ini_set('error_log', '/var/log/php/error.log');

3. Настройки для одновременного отображения ошибок и их записи в лог-файл


error_reporting(-1); // ini_set('error_reporting', -1);
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
ini_set('log_errors', 1);
ini_set('html_errors', 1);
ini_set('error_log', '/var/log/php/error.log');

 

Так же, эти опции можно задать и в конфигурационном файле php.ini или же в файле вашего виртуального хоста.