Реализация очень проста, поэтому вы можете попробовать реализовать ее самостоятельно.
Для этого вам необходимо реализовать интерфейс SQLLogger
.
Например, это может быть реализовано как следующий класс.
<?php
namespace Infrastructure;
use Doctrine\DBAL\Logging\SQLLogger;
use InvalidArgumentException;
class SQLFileLogger implements SQLLogger
{
private $fileName;
public function __construct($fileName)
{
if (!file_exists($fileName)) {
throw new InvalidArgumentException("File " . $fileName . " doesn't exist");
}
$this->fileName = $fileName;
}
public function startQuery($sql, array $params = null, array $types = null)
{
$query = "--- QUERY : " . $sql . PHP_EOL;
$params = "--- PARAMS : " . json_encode($params) . PHP_EOL;
$types = "--- TYPES : " . json_encode($types) . PHP_EOL;
$handle = fopen($this->fileName, 'a');
fwrite($handle, $query);
fwrite($handle, $params);
fwrite($handle, $types);
fflush($handle);
fclose($handle);
}
public function stopQuery()
{
}
}
И настроен так
$config->setSQLLogger( new \Infrastructure\SQLFileLogger( dirname( dirname( DIR ) ) . "/sql.log" ) );
Это должно записывать все запросы в файл журнала.
Не стесняйтесь изменять его в соответствии с вашими потребностями.