This commit is contained in:
Marcel Pociot
2022-02-08 11:16:57 +01:00
parent 92c4c2ffe1
commit a199aa8576
2 changed files with 43 additions and 3 deletions

View File

@@ -4,6 +4,8 @@ namespace App\Logger;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
use Symfony\Component\Console\Helper\Table; use Symfony\Component\Console\Helper\Table;
use Symfony\Component\Console\Helper\TableSeparator;
use Symfony\Component\Console\Helper\TableStyle;
use Symfony\Component\Console\Output\ConsoleOutputInterface; use Symfony\Component\Console\Output\ConsoleOutputInterface;
class CliRequestLogger extends Logger class CliRequestLogger extends Logger
@@ -24,6 +26,7 @@ class CliRequestLogger extends Logger
$this->section = $this->output->section(); $this->section = $this->output->section();
$this->table = new Table($this->section); $this->table = new Table($this->section);
$this->table->setStyle($this->getTableStyle());
$this->table->setHeaders(['Method', 'URI', 'Response', 'Time', 'Duration']); $this->table->setHeaders(['Method', 'URI', 'Response', 'Time', 'Duration']);
$this->requests = new Collection(); $this->requests = new Collection();
@@ -37,6 +40,33 @@ class CliRequestLogger extends Logger
return $this->output; 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) public function logRequest(LoggedRequest $loggedRequest)
{ {
if ($this->requests->has($loggedRequest->id())) { if ($this->requests->has($loggedRequest->id())) {
@@ -52,8 +82,11 @@ class CliRequestLogger extends Logger
return [ return [
$loggedRequest->getRequest()->getMethod(), $loggedRequest->getRequest()->getMethod(),
$loggedRequest->getRequest()->getUri(), $loggedRequest->getRequest()->getUri(),
optional($loggedRequest->getResponse())->getStatusCode().' '.optional($loggedRequest->getResponse())->getReasonPhrase(), '<href=foo;fg='.$this->getRequestColor($loggedRequest).';options=bold>'.
$loggedRequest->getStartTime()->toDateTimeString(), optional($loggedRequest->getResponse())->getStatusCode().' '.optional($loggedRequest->getResponse())->getReasonPhrase()
.'</>'
,
$loggedRequest->getStartTime()->isToday() ? $loggedRequest->getStartTime()->toTimeString() : $loggedRequest->getStartTime()->toDateTimeString(),
$loggedRequest->getDuration().'ms', $loggedRequest->getDuration().'ms',
]; ];
})->toArray()); })->toArray());

View File

@@ -3,6 +3,7 @@
namespace App\Logger; namespace App\Logger;
use Carbon\Carbon; use Carbon\Carbon;
use GuzzleHttp\Psr7\Message;
use function GuzzleHttp\Psr7\parse_request; use function GuzzleHttp\Psr7\parse_request;
use Illuminate\Support\Arr; use Illuminate\Support\Arr;
use Illuminate\Support\Str; use Illuminate\Support\Str;
@@ -173,7 +174,7 @@ class LoggedRequest implements \JsonSerializable
return $postData; return $postData;
} }
protected function detectSubdomain() public function detectSubdomain()
{ {
return collect($this->parsedRequest->getHeaders()->toArray()) return collect($this->parsedRequest->getHeaders()->toArray())
->mapWithKeys(function ($value, $key) { ->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() public function refreshId()
{ {
$requestId = (string) Str::uuid(); $requestId = (string) Str::uuid();