igancev / log
Composer package by igancev for record log in file, and delete their
Requires
- php: >=5.3.0
This package is not auto-updated.
Last update: 2020-01-24 16:08:51 UTC
README
Библиотека для логирования всевозможных данных в файлы, их структурированного хранения, а также их очистки по истечении срока жизни. Удобный инструмент для записи логов периодических и не только операций, и автоматического своевременного удаления устаревших файлов с диска.
Установка
log доступен на Packagist (igancev/log) и устанавливается через Composer.
$ composer require igancev/log
или
добавлением igancev/log в require section вашего composer.json file:
{ "require": { "igancev/log": "^1.0" } }
Использование
Запись лога в одну строку
(new Igancev\Log\Log('log text'))->setFileDir('/log/path/')->setLifeTime(5)->addLog();
Запись лога с кастомизированными настройками:
- относительную от корня сайта директорию хранения логов вида "/path/to/dir/" (при отсутствии создается автоматически, по умолчанию "/log/")
- имя файла (по умолчанию "log")
- расширение файла (по умолчанию "txt")
- сортировку записи. Log::SORT_ASC - запись новых данных в конец файла, Log::SORT_DESC - запись новых данных в начало файла (по умолчанию Log::SORT_ASC)
- время жизни файла в днях (по умолчанию не задано)
- текст лога
use Igancev\Log\Log; $log = new Log; // пример всех настроек $log ->setFileDir('/my/auto/creating/dir/') ->setFileName('myFileName') ->setFileExt('txt') ->setSort(Log::SORT_DESC) ->setLifeTime(10) ->addText("my log text\n"); // добавление текста к логу по мере надобности $log->addText("add more text"); // запись лога в файл $log->addLog();
Результатом работы будет файл /my/auto/creating/dir/myFileName-dd.mm.yyyy-lifetime-10.txt, где dd.mm.yyyy - текущая дата. Таким образом каждый день будет создаваться новый файл. В течение дня все данные будут записываться в текущий файл в зависимости от указанной сортировки. Содержимое файла:
14:25:19 my log text add more text
Автоматическое удаление устаревших файлов
Со временем файлы логов, особенно при периодических операциях, накапливаются, занимая драгоценное место на диске. Устанавливая при создании объекта метку lifetime методом $log->setLifeTime($daysCount), мы оставляем тем самым для себя возможность в дальнейшем чистить устаревшие файлы (с истекшим "сроком действия" lifetime), установив на периодическое выполнение (например cron) метод:
use Igancev\Log\LogGarbageCollector; LogGarbageCollector::clearOld('/path/to/clear/dir', true);
- первый параметр - путь путь директории для поиска и удаления устаревших файлов
- второй параметр - рекурсивность. По умолчанию true. При установке в значение false удалит устаревшие файлы только в заданной директории, не производя поиск во вложенных разделах.