better format for mysql
This commit is contained in:
@ -1,6 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
namespace Incoviba\Common\Implement\Log\Formatter;
|
namespace Incoviba\Common\Implement\Log\Formatter;
|
||||||
|
|
||||||
|
use Throwable;
|
||||||
use Monolog\Formatter\JsonFormatter;
|
use Monolog\Formatter\JsonFormatter;
|
||||||
use Monolog\LogRecord;
|
use Monolog\LogRecord;
|
||||||
|
|
||||||
@ -13,7 +14,35 @@ class PDO extends JsonFormatter
|
|||||||
|
|
||||||
public function format(LogRecord $record): string
|
public function format(LogRecord $record): string
|
||||||
{
|
{
|
||||||
|
if (is_a($record->message, Throwable::class)) {
|
||||||
|
$exception = $record->message;
|
||||||
|
$message = $this->normalizeException($exception);
|
||||||
|
$context = $record->context;
|
||||||
|
$context['exception'] = $exception;
|
||||||
|
if ($exception->getPrevious()) {
|
||||||
|
$context['previous'] = $this->walkException($exception);
|
||||||
|
}
|
||||||
|
$new_record = new LogRecord(
|
||||||
|
$record->datetime,
|
||||||
|
$record->channel,
|
||||||
|
$record->level,
|
||||||
|
json_encode($message),
|
||||||
|
$context,
|
||||||
|
$record->extra
|
||||||
|
);
|
||||||
|
$record = $new_record;
|
||||||
|
}
|
||||||
$normalized = $this->normalize($record, $this->maxNormalizeDepth);
|
$normalized = $this->normalize($record, $this->maxNormalizeDepth);
|
||||||
return $normalized['message'];
|
return $normalized['message'];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected function walkException(Throwable $exception, int $depth = 0): array
|
||||||
|
{
|
||||||
|
$output = [];
|
||||||
|
$currentDepth = $depth;
|
||||||
|
while ($previous = $exception->getPrevious() and $currentDepth < $this->maxNormalizeDepth) {
|
||||||
|
$output []= $this->normalizeException($previous);
|
||||||
|
}
|
||||||
|
return $output;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,8 +2,8 @@
|
|||||||
namespace Incoviba\Service;
|
namespace Incoviba\Service;
|
||||||
|
|
||||||
use Exception;
|
use Exception;
|
||||||
use Predis\Connection\ConnectionException;
|
|
||||||
use Psr\Log\LoggerInterface;
|
use Psr\Log\LoggerInterface;
|
||||||
|
use Predis\Connection\ConnectionException;
|
||||||
|
|
||||||
class Job
|
class Job
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user