В данной статье будет описано 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 класса):

  • // Запись всех ошибок, ТОЛЬКО ДЛЯ метода JLog::addLogger()
  • JLog::ALL
  •  
  • // Системные ошибки CMS
  • JLog::EMERGENCY
  •  
  • // Ошибки требующие немедлонного исправления
  • JLog::ALERT
  •  
  • // Критические ошибки системы
  • JLog::CRITICAL
  •  
  • // Ошибки некорректной работы программы/системы/CMS
  • JLog::ERROR
  •  
  • // Ошибки предупреждающие о некорректости работы программы/системы/CMS
  • JLog::WARNING
  •  
  • // Уведомления о не значительных, но требующих исправления ошибках
  • JLog::NOTICE
  •  
  • // Информационное сообщение
  • JLog::INFO
  •  
  • // Отладочное сообщение
  • JLog::DEBUG
Просто поддержать нас
Создание сайтов

Читайте также:

Полезное из Web