Advertisement
daniellz

Untitled

Feb 26th, 2025
190
0
6 days
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.06 KB | None | 0 0
  1. <?php
  2. declare(strict_types=1);
  3.  
  4. namespace app\services\Log;
  5.  
  6. use Monolog\Handler\StreamHandler;
  7. use Monolog\Logger;
  8. use PHPUnit\Event\Code\Throwable;
  9. use Psr\Http\Message\ResponseInterface;
  10. use Psr\Log\LogLevel;
  11. use RuntimeException;
  12.  
  13. class LoggerService
  14. {
  15.     private $loggers = [];
  16.  
  17.     private function createLogger(LogChannels $channel)
  18.     {
  19.         return $channel->createMonologLogger();
  20.     }
  21.  
  22.     public function getLogger($channel)
  23.     {
  24.         if (!isset($this->loggers[$channel->value])) {
  25.             $this->loggers[$channel->value] = $this->createLogger($channel);
  26.         }
  27.  
  28.         return $this->loggers[$channel->value];
  29.     }
  30.  
  31.     public function log($level, LogChannels $channel, $message, array $context = [], ?\Throwable $e = null, ?ResponseInterface $response = null)
  32.     {
  33.         $logger = $this->getLogger($channel);
  34.         if($e)
  35.         {
  36.             $context['exception'] = $e;
  37.         }
  38.         if($response)
  39.         {
  40.             $context['response'] = $response;
  41.         }
  42.         $logger->log($level, $message, $context);
  43.     }
  44.  
  45.     // Shortcut methods for each log level
  46.     public function info(LogChannels $channel, $message, array $context = [], ?\Throwable $e = null, ?ResponseInterface $response = null)
  47.     {
  48.         $this->log(LogLevel::INFO, $channel, $message, $context, $e, $response);
  49.     }
  50.  
  51.     public function debug(LogChannels $channel, $message, array $context = [], ?\Throwable $e = null, ?ResponseInterface $response = null)
  52.     {
  53.         $this->log(LogLevel::DEBUG, $channel, $message, $context, $e, $response);
  54.     }
  55.  
  56.     public function error(LogChannels $channel, $message, array $context = [], ?\Throwable $e = null, ?ResponseInterface $response = null)
  57.     {
  58.         $this->log(LogLevel::ERROR, $channel, $message, $context, $e, $response);
  59.     }
  60.  
  61.     public function warning(LogChannels $channel, $message, array $context = [], ?\Throwable $e = null, ?ResponseInterface $response = null)
  62.     {
  63.         $this->log(LogLevel::WARNING, $channel, $message, $context, $e, $response);
  64.     }
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement