summaryrefslogtreecommitdiff
path: root/vendor/doctrine/dbal/src/Logging
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/doctrine/dbal/src/Logging')
-rw-r--r--vendor/doctrine/dbal/src/Logging/Connection.php69
-rw-r--r--vendor/doctrine/dbal/src/Logging/Driver.php50
-rw-r--r--vendor/doctrine/dbal/src/Logging/Middleware.php21
-rw-r--r--vendor/doctrine/dbal/src/Logging/Statement.php48
4 files changed, 188 insertions, 0 deletions
diff --git a/vendor/doctrine/dbal/src/Logging/Connection.php b/vendor/doctrine/dbal/src/Logging/Connection.php
new file mode 100644
index 0000000..9c220de
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Logging/Connection.php
@@ -0,0 +1,69 @@
1<?php
2
3declare(strict_types=1);
4
5namespace Doctrine\DBAL\Logging;
6
7use Doctrine\DBAL\Driver\Connection as ConnectionInterface;
8use Doctrine\DBAL\Driver\Middleware\AbstractConnectionMiddleware;
9use Doctrine\DBAL\Driver\Result;
10use Doctrine\DBAL\Driver\Statement as DriverStatement;
11use Psr\Log\LoggerInterface;
12
13final class Connection extends AbstractConnectionMiddleware
14{
15 /** @internal This connection can be only instantiated by its driver. */
16 public function __construct(ConnectionInterface $connection, private readonly LoggerInterface $logger)
17 {
18 parent::__construct($connection);
19 }
20
21 public function __destruct()
22 {
23 $this->logger->info('Disconnecting');
24 }
25
26 public function prepare(string $sql): DriverStatement
27 {
28 return new Statement(
29 parent::prepare($sql),
30 $this->logger,
31 $sql,
32 );
33 }
34
35 public function query(string $sql): Result
36 {
37 $this->logger->debug('Executing query: {sql}', ['sql' => $sql]);
38
39 return parent::query($sql);
40 }
41
42 public function exec(string $sql): int|string
43 {
44 $this->logger->debug('Executing statement: {sql}', ['sql' => $sql]);
45
46 return parent::exec($sql);
47 }
48
49 public function beginTransaction(): void
50 {
51 $this->logger->debug('Beginning transaction');
52
53 parent::beginTransaction();
54 }
55
56 public function commit(): void
57 {
58 $this->logger->debug('Committing transaction');
59
60 parent::commit();
61 }
62
63 public function rollBack(): void
64 {
65 $this->logger->debug('Rolling back transaction');
66
67 parent::rollBack();
68 }
69}
diff --git a/vendor/doctrine/dbal/src/Logging/Driver.php b/vendor/doctrine/dbal/src/Logging/Driver.php
new file mode 100644
index 0000000..35acd39
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Logging/Driver.php
@@ -0,0 +1,50 @@
1<?php
2
3declare(strict_types=1);
4
5namespace Doctrine\DBAL\Logging;
6
7use Doctrine\DBAL\Driver as DriverInterface;
8use Doctrine\DBAL\Driver\Middleware\AbstractDriverMiddleware;
9use Psr\Log\LoggerInterface;
10use SensitiveParameter;
11
12final class Driver extends AbstractDriverMiddleware
13{
14 /** @internal This driver can be only instantiated by its middleware. */
15 public function __construct(DriverInterface $driver, private readonly LoggerInterface $logger)
16 {
17 parent::__construct($driver);
18 }
19
20 /**
21 * {@inheritDoc}
22 */
23 public function connect(
24 #[SensitiveParameter]
25 array $params,
26 ): Connection {
27 $this->logger->info('Connecting with parameters {params}', ['params' => $this->maskPassword($params)]);
28
29 return new Connection(
30 parent::connect($params),
31 $this->logger,
32 );
33 }
34
35 /**
36 * @param array<string,mixed> $params Connection parameters
37 *
38 * @return array<string,mixed>
39 */
40 private function maskPassword(
41 #[SensitiveParameter]
42 array $params,
43 ): array {
44 if (isset($params['password'])) {
45 $params['password'] = '<redacted>';
46 }
47
48 return $params;
49 }
50}
diff --git a/vendor/doctrine/dbal/src/Logging/Middleware.php b/vendor/doctrine/dbal/src/Logging/Middleware.php
new file mode 100644
index 0000000..989e0ca
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Logging/Middleware.php
@@ -0,0 +1,21 @@
1<?php
2
3declare(strict_types=1);
4
5namespace Doctrine\DBAL\Logging;
6
7use Doctrine\DBAL\Driver as DriverInterface;
8use Doctrine\DBAL\Driver\Middleware as MiddlewareInterface;
9use Psr\Log\LoggerInterface;
10
11final class Middleware implements MiddlewareInterface
12{
13 public function __construct(private readonly LoggerInterface $logger)
14 {
15 }
16
17 public function wrap(DriverInterface $driver): DriverInterface
18 {
19 return new Driver($driver, $this->logger);
20 }
21}
diff --git a/vendor/doctrine/dbal/src/Logging/Statement.php b/vendor/doctrine/dbal/src/Logging/Statement.php
new file mode 100644
index 0000000..ed1ca7f
--- /dev/null
+++ b/vendor/doctrine/dbal/src/Logging/Statement.php
@@ -0,0 +1,48 @@
1<?php
2
3declare(strict_types=1);
4
5namespace Doctrine\DBAL\Logging;
6
7use Doctrine\DBAL\Driver\Middleware\AbstractStatementMiddleware;
8use Doctrine\DBAL\Driver\Result as ResultInterface;
9use Doctrine\DBAL\Driver\Statement as StatementInterface;
10use Doctrine\DBAL\ParameterType;
11use Psr\Log\LoggerInterface;
12
13final class Statement extends AbstractStatementMiddleware
14{
15 /** @var array<int,mixed>|array<string,mixed> */
16 private array $params = [];
17
18 /** @var array<int,ParameterType>|array<string,ParameterType> */
19 private array $types = [];
20
21 /** @internal This statement can be only instantiated by its connection. */
22 public function __construct(
23 StatementInterface $statement,
24 private readonly LoggerInterface $logger,
25 private readonly string $sql,
26 ) {
27 parent::__construct($statement);
28 }
29
30 public function bindValue(int|string $param, mixed $value, ParameterType $type): void
31 {
32 $this->params[$param] = $value;
33 $this->types[$param] = $type;
34
35 parent::bindValue($param, $value, $type);
36 }
37
38 public function execute(): ResultInterface
39 {
40 $this->logger->debug('Executing statement: {sql} (parameters: {params}, types: {types})', [
41 'sql' => $this->sql,
42 'params' => $this->params,
43 'types' => $this->types,
44 ]);
45
46 return parent::execute();
47 }
48}