Лог операций

Краткая информация

Модуль позволяет вести логирование операций на сайте,с автоматическим удалением старых логов. Будет полезен разработчикам для отслеживания операций производимых в автоматическом режиме и повторяющихся, например - синхронизация с 1с, запросы к API, и тп.

Установить можно - отсюда.

Установка модуля стандартная, пример установки описан - здесь.

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

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

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

Поддерживает вложенные логи, распределяя их по папкам, удобные методы для управления.

Подключение модуля

После установки модуля подключение модуля осуществляется стандартными методами подключения API Битрикса:

\Bitrix\Main\Loader::includeModule('bxmaker.log'); 
$oLog = new \Bxmaker\Log\Manager('fname', '/podpapka/');

В итоге при первой записи появится файл fname_30.01.2016.log в папке /logs/podpapka/.

После ротации старые лог-файлы будут находится в папке - /logs/podpapka/.history/.

Помимо этого, если размер файла превышает установленный лимит размера лог-файлов, то текущий файл переименовывается в fname_30.01.2016_1.log и тп., и начинает заполняться опять файл fname_30.01.2016.log

Структура лог файлов

\Bitrix\Main\Loader::includeModule('bxmaker.log');

$oLog = new \Bxmaker\Log\Manager('fname', '/podpapka/');

$bClear = true; // перед записью очистить файл, по умолчанию false (не очищать)
$oLog->label('== заголовок блока для удобства ========', $bClear);

$oLog->timeOn(); // добавление времени в начало строки когда она была добавлена
$oLog->setName('file2'); // изменение фнаименования файла если необходимо сменить
$oLog->setPath('/podpapka2/'); // изменение пути сохранения файла

/* записываться уже будет в другой файл так как мы сменили его выше по коду */
$oLog->label('== заголовок блока для удобства 2 ========', $bClear);
$oLog->log(array(
    'code' => array(
        'name' => 'goods-1251',
        'article' => '1298-85-895'
    ),
    'str' => true
));

$oLog->log('строка', 1);

\Bxmaker\Log\Agent::cleanLogs();

Через некоторое время после работы модуля, структура логов будет как на картинке: пример структуры файлов лога модуля Лог операций

При это содержимое файлов будет следующим:

  • файл /logs/podpapka/fanme_12.01.2016.log
    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    == заголовок блока для удобства ========
    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    
  • файл /logs/podpapka2/fanme_12.01.2016.log
    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    == заголовок блока для удобства 2 ========
    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    16:53:50 array (
            'code' => array (
              'name' => 'goods-1251',
              'article' => '1298-85-895',
            ),
            'str' => true,
          )
    16:53:50 строка
    

Агенты

Агент cleanLogs() используется для отслеживания размеров лог файлов, их ротации и перемещения в архив. Настройки, которые использует агент при работе, устанавливаются в настройках модуля - Рабочий стол / Настройки / Настройки модулей / Лог операций

\Bxmaker\Log\Agent::cleanLogs();

В случае случайного удаления агента из списка агентов, его можно добавить в админке, заполнив поля

  • модуль - bxmaker.log
  • функция агента - Bxmaker\Log\Agent::cleanLogs()
  • интервал - 3600

Классы

Оснавная работа с логами ведется с помощью класса \Bxmaker\Log\Manager.

Manager

Класс \Bxmaker\Log\Manager - это основной класс для работы с логами. Инициалиация класса происходит следующим образом:

$oLog = new \Bxmaker\Log\Manager('fname', '/podpapka/'); 

Параметры вызова:

  • первый - наименование файла
  • второй - путь к лог-файлам относительно папки /logs/

Добавление заголовков

Для удобства ориентации в лог файле можно добавить заголовок блока методом setLabel(), который имеет 2 параметра:

  1. Название блока
  2. Флаг необходимости очистить файл перед добавлением заголовка, по умолчанию (не очищать)
$oLog->label('== заголовок блока для удобства ========');

Добавление метки времени

В лог файл в начало каждой записи можно добавлять метку времени, когда эта запись была добавлена. Включается и отключается эта возможность методом timeOn(), с одним единственный не обязательным параметром типа boolean, который по умолчанию равен true (включить добавление времени).

$oLog->timeOn();

Имя лог файла

Наименование лог-файла можно установить при инициализации экземпляра класса \Bxmaker\Log\Manager, а также методом setName(), также этот метод позволяет переключить запись данных в другой файл, изменив название.

$oLog->setName('filename2');

Директория лог файла

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

$oLog->setPath('/drugaya_podpapka/');

Добавление записей

Чтобы писать данные в лог файл, используйте метод log(), который принимает 3 параметра:

  1. данные - любой тип (строка, число, массив, объект)
  2. отступ от левой границы, для придания древовидного отображения строк в лог-файле
  3. очистить файл перед записью, по умолчанию - нет
$oLog->log(array(
    'code' => array(
        'name' => 'goods-1251',
        'article' => '1298-85-895'
    ),
    'str' => true
));