Advertisement
daniellz

Untitled

Feb 26th, 2025
203
0
6 days
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.91 KB | None | 0 0
  1. <?php
  2. declare(strict_types=1);
  3.  
  4. namespace app\services\Log;
  5.  
  6. use Psr\Http\Message\ResponseInterface;
  7. use Psr\Log\LogLevel;
  8.  
  9. class DebugConsoleLogger extends LoggerService
  10. {
  11.     private $loggers = [];
  12.  
  13.     private function createLogger(LogChannels $channel)
  14.     {
  15.         return $channel->createMonologLogger();
  16.     }
  17.  
  18.     public function getLogger($channel)
  19.     {
  20.         if (!isset($this->loggers[$channel->value])) {
  21.             $this->loggers[$channel->value] = $this->createLogger($channel);
  22.         }
  23.  
  24.         return $this->loggers[$channel->value];
  25.     }
  26.  
  27.     public function log($level, LogChannels $channel, $message, array $context = [], ?\Throwable $e = null, ?ResponseInterface $response = null)
  28.     {
  29.         $formattedMessage = $this->formatMessage($level, $channel, $message, $context, $e, $response);
  30.         echo $formattedMessage . PHP_EOL;
  31.     }
  32.  
  33.     private function formatMessage($level, LogChannels $channel, $message, array $context, ?\Throwable $e, ?ResponseInterface $response): string
  34.     {
  35.         $timestamp = date('Y-m-d H:i:s');
  36.         $formatted = "[{$timestamp}] [{$level}] [{$channel->value}] $message";
  37.  
  38.         if (!empty($context)) {
  39.             $formatted .= PHP_EOL . "  Context: " . json_encode($context, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
  40.         }
  41.  
  42.         if ($e) {
  43.             $formatted .= PHP_EOL . "  Exception: " . get_class($e) . " - " . $e->getMessage() .
  44.                 PHP_EOL . "  File: " . $e->getFile() . ":" . $e->getLine() .
  45.                 PHP_EOL . "  Stack trace: " . PHP_EOL . $e->getTraceAsString();
  46.         }
  47.  
  48.         if ($response) {
  49.             $formatted .= PHP_EOL . "  Response: HTTP/" . $response->getStatusCode() .
  50.                 PHP_EOL . "  Headers: " . json_encode($response->getHeaders(), JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES) .
  51.                 PHP_EOL . "  Body: " . $response->getBody();
  52.         }
  53.  
  54.         return $formatted;
  55.     }
  56.  
  57.     // Shortcut methods for each log level
  58.     public function info(LogChannels $channel, $message, array $context = [], ?\Throwable $e = null, ?ResponseInterface $response = null)
  59.     {
  60.         $this->log(LogLevel::INFO, $channel, $message, $context, $e, $response);
  61.     }
  62.  
  63.     public function debug(LogChannels $channel, $message, array $context = [], ?\Throwable $e = null, ?ResponseInterface $response = null)
  64.     {
  65.         $this->log(LogLevel::DEBUG, $channel, $message, $context, $e, $response);
  66.     }
  67.  
  68.     public function error(LogChannels $channel, $message, array $context = [], ?\Throwable $e = null, ?ResponseInterface $response = null)
  69.     {
  70.         $this->log(LogLevel::ERROR, $channel, $message, $context, $e, $response);
  71.     }
  72.  
  73.     public function warning(LogChannels $channel, $message, array $context = [], ?\Throwable $e = null, ?ResponseInterface $response = null)
  74.     {
  75.         $this->log(LogLevel::WARNING, $channel, $message, $context, $e, $response);
  76.     }
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement