Логирование ошибок

Все ошибки возникающие в процессе работы приложения фиксируются в лог-файлах приложения в директории:

/files/logs/

Лог-файлы приложения которые можно найти в данной директории следующие:

  • bills.log - ошибки возникающие в процессе активации платных услуг и приема платежей
  • cron.log - лог фиксирующий работу процессов cron-менеджера
  • errors.log - основной файл ошибок приложения
  • extensions.log - файл ошибок дополнений
  • js.log - файл javascript ошибок приложения и дополнений
  • update.log - лог фиксирующий выполненные действия в процессе установки обновления приложения

Также данный список может дополняться в зависимости от приложения и установленных в нем модулей.

Фиксировать ошибки в процессе работы приложения можно посредством вызова следующей функции:

bff::log('Текст ошибки');
bff::log('Информационный текст', Logger::INFO);
bff::log(['Сообщение #1', 'Сообщение #2'], Logger::WARNING);

Сообщения зафиксированные таким образом будут иметь следующий вид в файле errors.log:

[2019-03-22 11:18:51] core.ERROR: Текст ошибки
[2019-03-22 11:18:51] core.INFO: Информационный текст
[2019-03-22 11:18:51] core.WARNING: Array
(
    [0] => Сообщение #1
    [1] => Сообщение #2
)

Вместе с сообщением можно передать и массив с дополнительной информацией (контекстом) для дальнейшего изучения:

bff::log('Текст ошибки', ['extra'=>1]);
[2019-03-22 11:18:51] core.ERROR: Текст сообщения {"extra":1} 

При необходимости можно изменить файл в котором фиксируется ошибка:

bff::log('Текст ошибки', 'custom.log');
// или же с указанием типа сообщения
bff::log('Текст ошибки', Logger::DEBUG, 'custom.log');

В этом случае будет создан файл /files/logs/custom.log в котором и будет сохранен текст ошибки. Это может понадобится в случае тестирования отдельной функции приложения.

Для реализации механизма логирования используется библиотека Monolog, которая кроме записи в файлы умеет также работать и с другими типами хранилищ.

Дополнения

Фиксировать ошибки в процессе своей работы могут также и дополнения приложения, для этого вызовите следующую функцию:

$this->log('Текст ошибки дополнения');
$this->log('Текст предупреждения', Logger::WARNING);

Сообщение зафиксированные таким образом будут иметь следующий вид в файле extensions.log:

[2019-03-22 11:18:51] plugin.example.ERROR: Текст ошибки дополнения
[2019-08-25 13:33:12] plugin.example.WARNING: Текст предупреждения

Также можно передать массив с дополнительной информацией (контекстом) для дальнейшего изучения:

$this->log('Текст ошибки', ['status'=>1, 'data'=>$data]);
$this->log('Текст ошибки', Logger::WARNING, ['data'=>$data]);

Дополнительно вы можете увидеть список ошибок дополнения в админ-панели в его настройках в разделе "Разработчику / Логи", доступен который в режиме разработчика.

Состояние системы

Ошибки могут также возникать в процессе проверки состояния системы и фиксироваться в разделе "Настройки сайта / Состояние системы".

Подробнее о том каким образом ими можно управлять читайте в данном разделе.