/log

PHP. Simple logging to a file

Primary LanguagePHP

log - логирование в файлы на PHP

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

Установка

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