src/Doctrine/Logger/FileLogger.php
<?php declare(strict_types=1); namespace Rostenkowski\Doctrine\Logger; use Doctrine\DBAL\Logging\SQLLogger; class FileLogger implements SQLLogger{ /** * @var string */ private $file; /** * @var float */ private $start; /** * @var int */ private $current; /** * @var array */ private $queries = []; public function __construct(string $file) { $this->file = $file; register_shutdown_function(function () { file_put_contents($this->file, str_repeat('-', 100) . PHP_EOL . PHP_EOL, FILE_APPEND); }); } public function startQuery($sql, array $params = NULL, array $types = NULL) { $this->start = (float) microtime(true); $this->queries[++$this->current] = ['sql' => $sql, 'params' => $params, 'types' => $types, 'dur' => 0]; } public function stopQuery() { $q = $this->queries[$this->current]; $q['dur'] = (float) microtime(true) - $this->start; $log = sprintf("%s \n\n%s \n\n%s ms \n\n%s \n\n", "#$this->current:", $q['sql'], round($q['dur'] * 1000, 3), var_export($q['params'], true) ); file_put_contents($this->file, $log, FILE_APPEND); } }