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