Feat: Implement logging database handler

This commit is contained in:
Björn Fromme
2023-10-21 15:16:28 +02:00
parent cc93a0be0c
commit bf2e5600d0
9 changed files with 87 additions and 21 deletions
+27
View File
@@ -0,0 +1,27 @@
<?php
namespace App\Logging;
use Doctrine\DBAL\Connection;
use Monolog\Handler\AbstractProcessingHandler;
use Monolog\LogRecord;
class DatabaseHandler extends AbstractProcessingHandler
{
public function __construct(private readonly Connection $connection)
{
parent::__construct();
}
protected function write(LogRecord $record): void
{
$this->connection->insert('log', [
'level' => $record->level->getName(),
'channel' => $record->channel,
'message' => $record->message,
'context' => json_encode($record->context),
'extra' => json_encode($record->extra),
'timestamp' => (new \DateTimeImmutable())->format('Y-m-d H:i:s'),
]);
}
}
+7 -4
View File
@@ -2,6 +2,7 @@
namespace App\Logging;
use App\Entity\User;
use Monolog\LogRecord;
use Symfony\Bundle\SecurityBundle\Security;
@@ -16,18 +17,20 @@ class InjectUserProcessor
return $record;
}
if ('cli' === php_sapi_name()) {
/** @var User $user */
$user = $this->security->getUser();
if (null === $user || 'cli' === php_sapi_name()) {
$record->extra['user'] = [
'id' => null,
'username' => 'system',
'role' => 'system',
];
return $record;
} elseif (null === $user = $this->security->getUser()) {
return $record;
}
$record['extra']['user'] = [
$record->extra['user'] = [
'id' => $user->getId(),
'email' => $user->getEmail(),
'roles' => $user->getRoles(),