В данной статье будет описано 2 варианта добавления логов, ниже постараюсь объяснить отличие одного от другого.
Для возможности использовать необходимые классы, подгрузим нужные библиотеки:
- // Подключаем нужные библиотеки для для работы с логами
- jimport('joomla.log.logger.formattedtext');
Далее создадим массив с настройками (он будет одинаков для обоих методов):
- // Массив настроек
- $options = array(
- // Имя текстового файла для логирования, по умолчанию 'error.php'
- 'text_file' => 'error.php',
- // Путь к папке с логами (если параметр отсутствует, путь возьмется из конфига)
- 'text_file_path' => null,
- // Параметр проверяющий формат, если файл .php используем тип false, если текстовый или другой формат, то true
- 'text_file_no_php' => false,
- // Форматирование записываемого текста/сообщения
- 'text_entry_format' => ''
- );
Вариант первый:
Подготавливаем конфигурационные данные:
- // В нашем случае всё по стандарту, используем файл error.php
- $logger = new JLogLoggerFormattedtext( $options );
Подготавливаем данные для записи:
- $log = new JLogEntry(
- // Сообщение
- 'Message log',
- // Вид ошибки
- JLog::INFO,
- // Тип ошибки в понятии системы (компонент, ядро и т.д.)
- 'my_category',
- // Дата (в формате ГГГГ-ММ-ДД ЧЧ:ММ:СС)
- // null по умолчанию, создает текущую дату и время на сервере
- '2017-10-10 16:28:00',
- // Массив с дополнительными контекстными сообщениями
- array()
- );
Выполняем запись в лог:
- $logger->addEntry( $log );
Вариант второй (с использование класса JLog, он же Log):
Подготавливаем конфигурационные данные:
- // Регистрируем экземпляр класса JLog, для записи информации в нужный файл
- JLog::addLogger(
- // Массив настроек (см. выше)
- $options,
- // Вид записываемой ошибки в лог
- JLog::ALL,
- // Тип ошибки в понятии системы (компонент, ядро и т.д.)
- $categories = array(),
- // Исключение типов, т.е. вносить только указанные в массиве $categories
- $exclude = false
- );
Производим запись в лог файл:
- JLog::add(
- // Текстовая информация/сообщение
- $text = 'Message log',
- // Вид ошибки
- JLog::INFO,
- // Тип записываемой ошибки (компонент/система и т.д.)
- $category = '',
- // Дата (в формате ГГГГ-ММ-ДД ЧЧ:ММ:СС)
- // null по умолчанию, создает текущую дату и время на сервере
- $date = null,
- // Массив с дополнительными контекстными сообщениями
- array()
- );
Очень важно!
Отличие второго варианта от первого заключается в использовании константы (она же вид ошибки) JLog::ALL. Данный вариант собирает только те ошибки которые явно указаны в методе add(). Для примера, если в методе указать константу JLog::WARNING, а в метод попытаться записать JLog::INFO, то записи не произойдет, так как мы системе дали задачу записывать только WARNING ошибки.
JLog::ALL - константа применимая только в использовании второго варианта!
Отличие второго варианта от первого заключается в использовании константы (она же вид ошибки) JLog::ALL. Данный вариант собирает только те ошибки которые явно указаны в методе add(). Для примера, если в методе указать константу JLog::WARNING, а в метод попытаться записать JLog::INFO, то записи не произойдет, так как мы системе дали задачу записывать только WARNING ошибки.
JLog::ALL - константа применимая только в использовании второго варианта!
Очень странное поведении данного варианта еще заключается в том, что он собирает все ошибки с сайта и записывает их разом.
Используемые виды ошибок (константы JLog класса):
- // Запись всех ошибок, ТОЛЬКО ДЛЯ метода JLog::addLogger()
- JLog::ALL
- // Системные ошибки CMS
- JLog::EMERGENCY
- // Ошибки требующие немедлонного исправления
- JLog::ALERT
- // Критические ошибки системы
- JLog::CRITICAL
- // Ошибки некорректной работы программы/системы/CMS
- JLog::ERROR
- // Ошибки предупреждающие о некорректости работы программы/системы/CMS
- JLog::WARNING
- // Уведомления о не значительных, но требующих исправления ошибках
- JLog::NOTICE
- // Информационное сообщение
- JLog::INFO
- // Отладочное сообщение
- JLog::DEBUG