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 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(),
'<href=foo;fg='.$this->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());

View File

@@ -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();