src/FlexApp/Service/LogsManager.php line 67

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace FlexApp\Service;
  4. use FlexApp\DTO\LogMessageDto;
  5. use Monolog\Logger as MessageLevel;
  6. use Symfony\Component\Messenger\MessageBus;
  7. use Symfony\Component\Messenger\MessageBusInterface;
  8. use Symfony\Component\Messenger\Middleware\MiddlewareInterface;
  9. class LogsManager
  10. {
  11.     private string $appName;
  12.     private MessageBusInterface $bus;
  13.     public function __construct(
  14.         MessageBusInterface $bus,
  15.         string $appName
  16.     ) {
  17.         $this->bus $bus;
  18.         $this->appName $appName;
  19.     }
  20.     /**
  21.      * Создание менеджера без DI-контейнера
  22.      * @param string $appName
  23.      * @param MiddlewareInterface[] $middleware
  24.      * @return LogsManager
  25.      */
  26.     public static function create(string $appName, array $middleware = []): self
  27.     {
  28.         $messageBus = new MessageBus($middleware);
  29.         return new self($messageBus$appName);
  30.     }
  31.     public function logDebug(array $paramsstring $job)
  32.     {
  33.         $this->log($paramsMessageLevel::getLevelName(MessageLevel::DEBUG), $job);
  34.     }
  35.     public function logError(array $paramsstring $job)
  36.     {
  37.         $this->log($paramsMessageLevel::getLevelName(MessageLevel::ERROR), $job);
  38.     }
  39.     public function logInfo(array $paramsstring $job)
  40.     {
  41.         $this->log($paramsMessageLevel::getLevelName(MessageLevel::INFO), $job);
  42.     }
  43.     public function logWarning(array $paramsstring $job)
  44.     {
  45.         $this->log($paramsMessageLevel::getLevelName(MessageLevel::WARNING), $job);
  46.     }
  47.     private function log(array $paramsstring $levelstring $job)
  48.     {
  49.         $params = new LogMessageDto(
  50.             json_encode($paramsJSON_UNESCAPED_UNICODE),
  51.             $level,
  52.             $job,
  53.             $this->appName
  54.         );
  55.         $this->bus->dispatch($params);
  56.     }
  57.     public function getAppName(): string
  58.     {
  59.         return $this->appName;
  60.     }
  61.     public function setAppName(string $appName): void
  62.     {
  63.         $this->appName $appName;
  64.     }
  65. }