Библиотека для логирования всевозможных данных в файлы, их структурированного хранения, а также их очистки по истечении срока жизни. Удобный инструмент для записи логов периодических и не только операций, и автоматического своевременного удаления устаревших файлов с диска.
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 удалит устаревшие файлы только в заданной директории, не производя поиск во вложенных разделах.