diff --git a/app/Logger/CliRequestLogger.php b/app/Logger/CliRequestLogger.php index f8fd676..588b9bd 100644 --- a/app/Logger/CliRequestLogger.php +++ b/app/Logger/CliRequestLogger.php @@ -4,6 +4,8 @@ namespace App\Logger; use Illuminate\Support\Collection; use Symfony\Component\Console\Helper\Table; +use Symfony\Component\Console\Helper\TableSeparator; +use Symfony\Component\Console\Helper\TableStyle; use Symfony\Component\Console\Output\ConsoleOutputInterface; class CliRequestLogger extends Logger @@ -24,6 +26,7 @@ class CliRequestLogger extends Logger $this->section = $this->output->section(); $this->table = new Table($this->section); + $this->table->setStyle($this->getTableStyle()); $this->table->setHeaders(['Method', 'URI', 'Response', 'Time', 'Duration']); $this->requests = new Collection(); @@ -37,6 +40,33 @@ class CliRequestLogger extends Logger return $this->output; } + protected function getTableStyle() + { + return (new TableStyle()) + ->setHorizontalBorderChars('─') + ->setVerticalBorderChars('│') + ->setCrossingChars('┼', '┌', '┬', '┐', '┤', '┘', '┴', '└', '├') + ; + } + + protected function getRequestColor(?LoggedRequest $request) + { + $statusCode = optional($request->getResponse())->getStatusCode(); + $color = 'white'; + + if ($statusCode >= 200 && $statusCode < 300) { + $color = 'green'; + } elseif ($statusCode >= 300 && $statusCode < 400) { + $color = 'blue'; + } elseif ($statusCode >= 400 && $statusCode < 500) { + $color = 'yellow'; + } elseif ($statusCode >= 500) { + $color = 'red'; + } + + return $color; + } + public function logRequest(LoggedRequest $loggedRequest) { if ($this->requests->has($loggedRequest->id())) { @@ -52,8 +82,11 @@ class CliRequestLogger extends Logger return [ $loggedRequest->getRequest()->getMethod(), $loggedRequest->getRequest()->getUri(), - optional($loggedRequest->getResponse())->getStatusCode().' '.optional($loggedRequest->getResponse())->getReasonPhrase(), - $loggedRequest->getStartTime()->toDateTimeString(), + 'getRequestColor($loggedRequest).';options=bold>'. + optional($loggedRequest->getResponse())->getStatusCode().' '.optional($loggedRequest->getResponse())->getReasonPhrase() + .'' + , + $loggedRequest->getStartTime()->isToday() ? $loggedRequest->getStartTime()->toTimeString() : $loggedRequest->getStartTime()->toDateTimeString(), $loggedRequest->getDuration().'ms', ]; })->toArray()); diff --git a/app/Logger/LoggedRequest.php b/app/Logger/LoggedRequest.php index 11ae899..e6806cd 100644 --- a/app/Logger/LoggedRequest.php +++ b/app/Logger/LoggedRequest.php @@ -3,6 +3,7 @@ namespace App\Logger; use Carbon\Carbon; +use GuzzleHttp\Psr7\Message; use function GuzzleHttp\Psr7\parse_request; use Illuminate\Support\Arr; use Illuminate\Support\Str; @@ -173,7 +174,7 @@ class LoggedRequest implements \JsonSerializable return $postData; } - protected function detectSubdomain() + public function detectSubdomain() { return collect($this->parsedRequest->getHeaders()->toArray()) ->mapWithKeys(function ($value, $key) { @@ -214,6 +215,12 @@ class LoggedRequest implements \JsonSerializable } } + public function getUrl() + { + $request = Message::parseRequest($this->rawRequest); + dd($request->getUri()->withFragment('')); + } + public function refreshId() { $requestId = (string) Str::uuid();