Версия: 6.x
burger close
Логирование

Логирование позволяет делать записи, которые в значительной степени облегчают последующую отладку модуля.

Рассмотрим пример создания класса логирования LogNewClass для вымышленного модуля SomeModule.

Для соблюдения единого стиля мы рекомендуем размещать классы логирования в папке /model/log.

Класс логирования

Рассмотрим методы базового класса RS::Log::AbstractLog, которые необходимо реализовать/унаследовать в нашем классе LogNewClass.

<?php
namespace SomeModule\Model\Log;
class LogNewClass extends RS\Log\AbstractLog
{
const LEVEL_COMMON = 'common';
const LEVEL_DETAIL = 'detail';
/**
* Возвращает идентификатор класса логирования
*
* @return string
public function getIdentifier(): string
{
return 'new_class';
}
/**
* Возвращает название класса логирования
*
* @return string
public function getTitle(): string
{
return t('Наименование класса логирования');
}
/**
* Возвращает список допустимых уровней лог-записей
* Уровни логирования используются для настройки детальности логирования и фильтрации записей при просмотре лог-файлов
*
* @return string[]
protected function selfLogLevelList(): array
{
return [
self::LEVEL_COMMON => t('Общий'),
self::LEVEL_DETAIL => t('Детально'),
];
}
}

Регистрация нового класса логирования в системе

Для регистрации в системе нового типа доставки, необходимо обработать событие getlogs. Согласно правилам работы подсистемы событий в ReadyScript, регистрация обработчика событий производится в файле /config/handlers.inc.php.

Пример регистрации нового класса логирования LogNewClass.

<?php
namespace SomeModule\Config;
/**
* Класс содержит обработчики событий, на которые подписан модуль
class Handlers extends \RS\Event\HandlerAbstract
{
/**
* Добавляет подписку на события
*
* @return void
public function init()
{
$this->bind('getlogs');
}
/**
* Регистрирует в системе классы логирования
*
* @param AbstractLog[] $list - список классов логирования
* @return AbstractLog[]
public static function getLogs($list)
{
$list[] = \SomeModule\Model\Log\LogNewClass::getInstance();
return $list;
}

Использование класса логирования

Для записи логов необходимо получить экземпляр класса логирования, затем использовать метод "write"

/**
* Производит запись в лог-файл
*
* @param string $text - лог-запись
* @param string $level - уровень логирования, если не указан - используется первый уровень в списке
public function write(string $text, string $level = null): void

Пример:

$log = LogNewClass::getInstance();
$log->write(t('Текст записи в лог'), LogNewClass::LEVEL_COMMON);

Настройки логирования в административной панели

Настроить логирование можно в административной панели, в меню "Управление" - "Настройка системы" - вкладка "Система логирования". Для каждого класса логирования можно разрешить/запретить запись логов, а также указать детальность логирования и максимальный размер лог-файла.

Заметки
Чтобы избежать переполнения рабочего диска, старые записи в лог-файле удаляются автоматически.

Просмотр логов

Просмотр логов доступен в административной панели, в меню "Управление" - "Логи".

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