Началр работы с переработкой
This commit is contained in:
129
sources/Loggers/Jasmo.php
Normal file
129
sources/Loggers/Jasmo.php
Normal file
@@ -0,0 +1,129 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace VK\Loggers;
|
||||
|
||||
use Monolog\Logger;
|
||||
use Monolog\Handler\StreamHandler;
|
||||
use Jasny\ErrorHandler;
|
||||
use DateTime;
|
||||
use VK\Traits\Singleton;
|
||||
|
||||
/**
|
||||
* Журналист Jasmo
|
||||
*
|
||||
* Основан на "monolog/monolog" и "jasny/error-handler"
|
||||
* Monolog + Jasny = Jasmo
|
||||
*
|
||||
* @package Log
|
||||
* @author Arsen Mirzaev
|
||||
*/
|
||||
class Jasmo extends LoggerAbstract
|
||||
{
|
||||
use Singleton;
|
||||
|
||||
/**
|
||||
* Экземпляр класса журналиста
|
||||
*
|
||||
* @var Logger
|
||||
*/
|
||||
public static $logger;
|
||||
|
||||
// /**
|
||||
// * Экземпляр класса обработчика ошибок
|
||||
// *
|
||||
// * @var ErrorHandler
|
||||
// */
|
||||
// public ErrorHandler $handler;
|
||||
|
||||
public static function post($file = null): ?Jasmo
|
||||
{
|
||||
$file = $file ?? date_format(new DateTime($_ENV['TIMEZONE']), 'd_m_Y');
|
||||
|
||||
/**
|
||||
* Создание логгера по спецификации PSR-3 (Monolog)
|
||||
*
|
||||
* @param string Название канала логирования
|
||||
*/
|
||||
self::$logger = new Logger(__CLASS__);
|
||||
|
||||
/**
|
||||
* Создание обработчиков (порядок обязателен)
|
||||
*/
|
||||
self::$logger->pushHandler(new StreamHandler($_ENV['PATH_ROOT'] . $_ENV['PATH_LOGS'] . "INFO_$file.log", Logger::INFO, false)); // Инфомация о процессе работы
|
||||
self::$logger->pushHandler(new StreamHandler($_ENV['PATH_ROOT'] . $_ENV['PATH_LOGS'] . "NOTICE_$file.log", Logger::NOTICE, false)); // Уведомления
|
||||
self::$logger->pushHandler(new StreamHandler($_ENV['PATH_ROOT'] . $_ENV['PATH_LOGS'] . "WARNING_$file.log", Logger::WARNING, false)); // Предупреждения
|
||||
self::$logger->pushHandler(new StreamHandler($_ENV['PATH_ROOT'] . $_ENV['PATH_LOGS'] . "ERROR_$file.log", Logger::ERROR, false)); // Ошибки
|
||||
self::$logger->pushHandler(new StreamHandler($_ENV['PATH_ROOT'] . $_ENV['PATH_LOGS'] . "CRITICAL_$file.log", Logger::CRITICAL, false)); // Критические ошибки
|
||||
self::$logger->pushHandler(new StreamHandler($_ENV['PATH_ROOT'] . $_ENV['PATH_LOGS'] . "ALERT_$file.log", Logger::ALERT, false)); // Критические ошибки
|
||||
self::$logger->pushHandler(new StreamHandler($_ENV['PATH_ROOT'] . $_ENV['PATH_LOGS'] . "EMERGENCY_$file.log", Logger::EMERGENCY, false)); // Критические ошибки
|
||||
self::$logger->pushHandler(new StreamHandler($_ENV['PATH_ROOT'] . $_ENV['PATH_LOGS'] . "$file.log", Logger::DEBUG)); // Общий лог
|
||||
|
||||
// test
|
||||
// self::$logger->pushProcessor(function ($record) {
|
||||
// $record['extra']['dummy'] = 'Hello world!';
|
||||
|
||||
// return $record;
|
||||
// });
|
||||
|
||||
echo '[' . date_format(new DateTime($_ENV['TIMEZONE']), 'd-m-Y H:i:s') . '] Начало работы', PHP_EOL;
|
||||
self::$logger->info('Начало работы');
|
||||
|
||||
return self::$instance;
|
||||
}
|
||||
|
||||
public static function get(): ?Jasmo
|
||||
{
|
||||
return self::$instance;
|
||||
}
|
||||
|
||||
public static function delete(): ?Jasmo
|
||||
{
|
||||
return self::$instance;
|
||||
}
|
||||
|
||||
public static function postErrorHandler(): ?Jasmo
|
||||
{
|
||||
/**
|
||||
* Подключение логгера в обработчик ошибок (Jasny)
|
||||
*/
|
||||
$handler = new ErrorHandler(self::$logger);
|
||||
|
||||
$handler->logUncaught(E_ALL); // Обрабатывать все ошибки
|
||||
$handler->onFatalError(function ($error) {
|
||||
self::$logger->error($error);
|
||||
}, true);
|
||||
|
||||
return self::$instance;
|
||||
}
|
||||
|
||||
public static function deleteErrorHandler(): ?Jasmo
|
||||
{
|
||||
return self::$instance;
|
||||
}
|
||||
|
||||
public static function postShutdownHandler(): ?Jasmo
|
||||
{
|
||||
register_shutdown_function(array(self::$instance, 'handlerShutdown'));
|
||||
|
||||
return self::$instance;
|
||||
}
|
||||
|
||||
|
||||
public function handlerShutdown(): void
|
||||
{
|
||||
self::$logger->info('Завершение работы');
|
||||
echo '[' . date_format(new DateTime($_ENV['TIMEZONE']), 'd-m-Y H:i:s') . '] Завершение работы', PHP_EOL;
|
||||
}
|
||||
|
||||
// public function handlerErrors($errno, $errstr, $errfile, $errline, $errcontext): bool
|
||||
// {
|
||||
// echo "друг, да ты вероянто напортачил $errno $errstr", PHP_EOL, PHP_EOL;
|
||||
// if ($this->logger->error("друг, да ты вероянто напортачил $errno $errstr")) {
|
||||
// return true;
|
||||
// } else {
|
||||
// return false;
|
||||
// }
|
||||
// }
|
||||
}
|
26
sources/Loggers/LoggerAbstract.php
Normal file
26
sources/Loggers/LoggerAbstract.php
Normal file
@@ -0,0 +1,26 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace VK\Loggers;
|
||||
|
||||
/**
|
||||
* Абстрактный класс журналиста
|
||||
*
|
||||
*
|
||||
* @package Log
|
||||
* @author Arsen Mirzaev
|
||||
*/
|
||||
abstract class LoggerAbstract
|
||||
{
|
||||
/**
|
||||
* Экземпляр класса журналиста
|
||||
*
|
||||
* @var LoggerAbstract
|
||||
*/
|
||||
public static $logger;
|
||||
|
||||
abstract static public function post($file = null): ?LoggerAbstract;
|
||||
abstract static public function get(): ?LoggerAbstract;
|
||||
abstract static public function delete(): ?LoggerAbstract;
|
||||
}
|
Reference in New Issue
Block a user