Primo Committ
This commit is contained in:
47
vendor/facade/ignition/src/LogRecorder/LogMessage.php
vendored
Normal file
47
vendor/facade/ignition/src/LogRecorder/LogMessage.php
vendored
Normal file
@@ -0,0 +1,47 @@
|
||||
<?php
|
||||
|
||||
namespace Facade\Ignition\LogRecorder;
|
||||
|
||||
use Illuminate\Log\Events\MessageLogged;
|
||||
|
||||
class LogMessage
|
||||
{
|
||||
/** @var string */
|
||||
protected $message;
|
||||
|
||||
/** @var array */
|
||||
protected $context;
|
||||
|
||||
/** @var string */
|
||||
protected $level;
|
||||
|
||||
/** @var float */
|
||||
protected $microtime;
|
||||
|
||||
public function __construct(?string $message, string $level, array $context = [], ?float $microtime = null)
|
||||
{
|
||||
$this->message = $message;
|
||||
$this->level = $level;
|
||||
$this->context = $context;
|
||||
$this->microtime = $microtime ?? microtime(true);
|
||||
}
|
||||
|
||||
public static function fromMessageLoggedEvent(MessageLogged $event): self
|
||||
{
|
||||
return new self(
|
||||
$event->message,
|
||||
$event->level,
|
||||
$event->context
|
||||
);
|
||||
}
|
||||
|
||||
public function toArray()
|
||||
{
|
||||
return [
|
||||
'message' => $this->message,
|
||||
'level' => $this->level,
|
||||
'context' => $this->context,
|
||||
'microtime' => $this->microtime,
|
||||
];
|
||||
}
|
||||
}
|
||||
91
vendor/facade/ignition/src/LogRecorder/LogRecorder.php
vendored
Normal file
91
vendor/facade/ignition/src/LogRecorder/LogRecorder.php
vendored
Normal file
@@ -0,0 +1,91 @@
|
||||
<?php
|
||||
|
||||
namespace Facade\Ignition\LogRecorder;
|
||||
|
||||
use Illuminate\Contracts\Foundation\Application;
|
||||
use Illuminate\Log\Events\MessageLogged;
|
||||
use Throwable;
|
||||
|
||||
class LogRecorder
|
||||
{
|
||||
/** @var \Facade\Ignition\LogRecorder\LogMessage[] */
|
||||
protected $logMessages = [];
|
||||
|
||||
/** @var \Illuminate\Contracts\Foundation\Application */
|
||||
protected $app;
|
||||
|
||||
/** @var int|null */
|
||||
private $maxLogs;
|
||||
|
||||
public function __construct(Application $app, ?int $maxLogs = null)
|
||||
{
|
||||
$this->app = $app;
|
||||
$this->maxLogs = $maxLogs;
|
||||
}
|
||||
|
||||
public function register(): self
|
||||
{
|
||||
$this->app['events']->listen(MessageLogged::class, [$this, 'record']);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function record(MessageLogged $event): void
|
||||
{
|
||||
if ($this->shouldIgnore($event)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$this->logMessages[] = LogMessage::fromMessageLoggedEvent($event);
|
||||
|
||||
if (is_int($this->maxLogs)) {
|
||||
$this->logMessages = array_slice($this->logMessages, -$this->maxLogs);
|
||||
}
|
||||
}
|
||||
|
||||
public function getLogMessages(): array
|
||||
{
|
||||
return $this->toArray();
|
||||
}
|
||||
|
||||
public function toArray(): array
|
||||
{
|
||||
$logMessages = [];
|
||||
|
||||
foreach ($this->logMessages as $log) {
|
||||
$logMessages[] = $log->toArray();
|
||||
}
|
||||
|
||||
return $logMessages;
|
||||
}
|
||||
|
||||
protected function shouldIgnore($event): bool
|
||||
{
|
||||
if (! isset($event->context['exception'])) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (! $event->context['exception'] instanceof Throwable) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public function reset(): void
|
||||
{
|
||||
$this->logMessages = [];
|
||||
}
|
||||
|
||||
public function getMaxLogs(): ?int
|
||||
{
|
||||
return $this->maxLogs;
|
||||
}
|
||||
|
||||
public function setMaxLogs(?int $maxLogs): self
|
||||
{
|
||||
$this->maxLogs = $maxLogs;
|
||||
|
||||
return $this;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user