alexxorlovv / log

Log

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Logger

##Как все работает основано на PSR 3 спецификации

##Примеры Инициализация

use Sweetkit\Foundation\Log\Logger;
use Sweetkit\Foundation\Log\\Adapters\LoggerText;

$logger = new Logger(new LoggerText('path/file.txt'));

Возможные адаптеры

use Sweetkit\Foundation\Log\Logger;
use Sweetkit\Foundation\Log\Adapters\{LoggerText,LoggerJson,LoggerRuntime,LoggerSerialize};

$loggerText = new Logger(new LoggerText('path/file.txt'));
$loggerSerialize = new Logger(new LoggerSerialize('path/file.serialize'));
$loggerJson = new Logger(new LoggerJson'path/file.json');
$loggerRuntime = new Logger(new LoggerRuntime);

####Уровни логирования

  • alert
  • info
  • emergency
  • critical
  • error
  • warning
  • notice
  • debug

Использование

$logger->alert("My message {text}",["text" => "AlertMessage"]);

Варианты вывода

use Sweetkit\Foundation\Log\Logger;
use Sweetkit\Foundation\Log\Adapters\LoggerText;
use Sweetkit\Foundation\Log\Viewers\{LoggerViewHtml,LoggerViewConsole};

$logger = new Logger(new LoggerText('path/file.txt'));
$logger->print(new LoggerViewHtml);
$logger->print(new LoggerViewConsole);

####Фильтрация логов

  • date_in - Начальная дата
  • date_out - Конечная дата
  • limit - Количество доступных результатов
  • level - Необходимый Уровень лога
use Sweetkit\Foundation\Log\Logger;
use Sweetkit\Foundation\Log\Adapters\LoggerText;
use Sweetkit\Foundation\Log\Viewers\LoggerViewHtml;

$logger = new Logger(new LoggerText('path/file.txt'));
$filters = [
            'date_in' => '2012-12-12 12:12:12', 
            'date_out' => '2013-09-12 01:12:12', 
            'level' => 'alert', 
            'limit' => 5];
$logger->print(new LoggerViewHtml,$filters);

###Как можно применить на практике

use Sweetkit\Foundation\Log\{Logger, LoggerAware,LoggerAdapter};
use Sweetkit\Foundation\Log\Adapters\LoggerText;
use Sweetkit\Foundation\Log\Viewers\LoggerViewHtml;

class SqlLogger extends Logger
{

}

class SqlManager extends LoggerAware
{
    public function __construct(LoggerAdapter $adapter)
    {
        $this->setLogger(new SqlLogger($adapter));
    }

    public function getLogger() : Logger
    {
        return $this->logger;
    }
}

$manager = new SqlManager(new LoggerText);

##На будущее

  • Возможность разделять файлы на подфайлы при достжении определенного веса
  • Разделать файлы по датам создания тем самым сокращая вес файлов и ускоряя доступ к ним
  • Сделать возможным функцию только для записи - тем самым ускоряя скорость работы
  • Добавить в фильтры возможность поиска текста в сообщении
  • Добавить в фильтры возможность получения лимита как с конца так и с начала полученного результата
  • Добавить адаптеры для работы с Redis и Базами дааных
  • Написать unit tests
  • Документировать код

About

Log


Languages

Language:PHP 100.0%