toropyga / flog
Libraries for logging from Toropyga
Requires
- php: >=7.4
- ext-fileinfo: *
- ext-mbstring: *
- toropyga/base: *
- toropyga/db: *
README
Класс логирования
Содержание
Общее описание
Класс FLog предназначен для сохранения переданных данных в файл. Для работы необходимо наличие PHP версии 7.1 и выше.
Есть возможность настройки размера конечного файла и времени хранения файлов. Файлы логов не будут превышать указанного размера и не будут хранится дольше указанного времени хранения.
Установка
Рекомендуемый способ установки библиотеки FLog с использованием Composer:
composer require toropyga/flog
Настройка
Предварительная настройка параметров по умолчанию может осуществляться или непосредственно в самом классе, или с помощью именованных констант. Именованные константы при необходимости объявляются до вызова класса, например, в конфигурационном файле, и определяют параметры по умолчанию.
- LOG_ROOT_PATH - путь к корневой директории сайта, по умолчанию - текущая директория;
- LOG_PATH - имя директории в которой создаётся директория логов;
- LOG_DIR - имя директории логов;
- LOG_NAME - имя файла логов;
- LOG_SIZE - максимальный размер файла логов в мегабайтах (Мб);
- LOG_TIME - количество дней на протяжении которых сохраняются логи;
- LOG_LEVEL - уровень лога по умолчанию (debug, info, notice, warning, error, critical, alert, emergency);
- LOG_SAVE_NOW - сохранять строку лога сразу в файл или сохранить пакетом по окончании работы;
Описание работы
Подключение файла класса
require_once("Base.php"); require_once("FLog.php");
или с использованием composer
require_once("vendor/autoload.php");
Инициализация класса
$LOG = new FYN\FLog();
Настройка параметров
Настройка объёма служебной информации в логе. Может принимать значения:
- simple - date, level, uri
- advanced - ip, date, level, uri
- full - ip, date, level, uri, user agent
$LOG->setSystemInfo('advanced');
Установка уровня логов. Может принимать значения: emergency, alert, critical, error, warning, notice, info, debug
$LOG->setLogLevel('error');
Установка имени файла для записи логов
$LOG->setName ($file);
Установка способа сохранения логов.
На вход может принимать на вход числа от 0 до 6 или строку (file - в файл, stdout - система, db - база данных)
Числа:
- 0 - сохранять в файл
- 1 - сохранять в STDOUT
- 2 - сохранять в БД
- 3 - сохранять в файл и STDOUT
- 4 - сохранять в файл и БД
- 5 - сохранять в STDOUT и БД
- 6 - сохранять в файл, STDOUT и БД
Если на вход подаётся не число, а строка, то в ней может быть казано несколько типов, разделённых запятой в любом порядке ('file, db')
По умолчанию сохраняет только в файл.
$LOG->setSaveType(4);
или
$LOG->setSaveType('file,db');
Подключение базы данных для записи логов в базу данных
use FYN\DB; $DB = new DB\MySQL(); $LOG->setDB($DB);
Сохранение строки логов
Предварительные данные лога.
В тексте лога возможна подстановка. Подстановочная переменная выделяется фигурными скобками. Подстановка осуществляется значениями из массива context по ключу, соответствующему имени подстановочной переменной без фигурных скобок. (см. документацию п.1.2)
$message = "log text for {user}"; $context = array("user" => "you", "other" => "Other information"); // необязательный параметр
Лог уровня debug
$LOG->debug($message, $context);
Лог уровня info
$LOG->info($message, $context);
Лог уровня notice
$LOG->notice($message, $context);
Лог уровня warning
$LOG->warning($message, $context);
Лог уровня error
$LOG->error($message, $context);
Лог уровня critical
$LOG->critical($message, $context);
Лог уровня alert
$LOG->alert($message, $context);
Лог уровня emergency
$LOG->emergency($message, $context);
Также возможен общий вариант с указанием уровня логов
$level = "debug"; $message = "log text for {user}"; $context = array("user" => "you"); // необязательный параметр $LOG->log($level, $message, $context); // сохраняем лог
Можно использовать устаревший вариант
$message = "log text"; $file = "file_log_name"; $LOG->set2Log($message, $file); // сохраняем лог
Сохранение массива логов
$LOG->setLevel('debug'); // устанавливаем, если необходимо, уровень логов $logs = array(); $logs['log'][] = "log text line 1"; $logs['log'][] = "log text line 2"; $logs['log'][] = "log text line 3"; $logs['file'] = "file_log_name"; $LOG->setArray2Log($logs); // сохраняем лог