Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- declare(strict_types=1);
- namespace app\services\Log;
- use Psr\Http\Message\ResponseInterface;
- use Psr\Log\LogLevel;
- class DebugConsoleLogger extends LoggerService
- {
- private $loggers = [];
- private function createLogger(LogChannels $channel)
- {
- return $channel->createMonologLogger();
- }
- public function getLogger($channel)
- {
- if (!isset($this->loggers[$channel->value])) {
- $this->loggers[$channel->value] = $this->createLogger($channel);
- }
- return $this->loggers[$channel->value];
- }
- public function log($level, LogChannels $channel, $message, array $context = [], ?\Throwable $e = null, ?ResponseInterface $response = null)
- {
- $formattedMessage = $this->formatMessage($level, $channel, $message, $context, $e, $response);
- echo $formattedMessage . PHP_EOL;
- }
- private function formatMessage($level, LogChannels $channel, $message, array $context, ?\Throwable $e, ?ResponseInterface $response): string
- {
- $timestamp = date('Y-m-d H:i:s');
- $formatted = "[{$timestamp}] [{$level}] [{$channel->value}] $message";
- if (!empty($context)) {
- $formatted .= PHP_EOL . " Context: " . json_encode($context, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
- }
- if ($e) {
- $formatted .= PHP_EOL . " Exception: " . get_class($e) . " - " . $e->getMessage() .
- PHP_EOL . " File: " . $e->getFile() . ":" . $e->getLine() .
- PHP_EOL . " Stack trace: " . PHP_EOL . $e->getTraceAsString();
- }
- if ($response) {
- $formatted .= PHP_EOL . " Response: HTTP/" . $response->getStatusCode() .
- PHP_EOL . " Headers: " . json_encode($response->getHeaders(), JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES) .
- PHP_EOL . " Body: " . $response->getBody();
- }
- return $formatted;
- }
- // Shortcut methods for each log level
- public function info(LogChannels $channel, $message, array $context = [], ?\Throwable $e = null, ?ResponseInterface $response = null)
- {
- $this->log(LogLevel::INFO, $channel, $message, $context, $e, $response);
- }
- public function debug(LogChannels $channel, $message, array $context = [], ?\Throwable $e = null, ?ResponseInterface $response = null)
- {
- $this->log(LogLevel::DEBUG, $channel, $message, $context, $e, $response);
- }
- public function error(LogChannels $channel, $message, array $context = [], ?\Throwable $e = null, ?ResponseInterface $response = null)
- {
- $this->log(LogLevel::ERROR, $channel, $message, $context, $e, $response);
- }
- public function warning(LogChannels $channel, $message, array $context = [], ?\Throwable $e = null, ?ResponseInterface $response = null)
- {
- $this->log(LogLevel::WARNING, $channel, $message, $context, $e, $response);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement