Better logging of SQL queries in Doctrine DBAL for Symfony.
Make sure Composer is installed globally, as explained in the installation chapter of the Composer documentation.
Open a command console, enter your project directory and execute:
$ composer require halloverden/symfony-doctrine-sql-logger-bundle
Open a command console, enter your project directory and execute the following command to download the latest stable version of this bundle:
$ composer require halloverden/symfony-doctrine-sql-logger-bundle
Then, enable the bundle by adding it to the list of registered bundles
in the config/bundles.php
file of your project:
// config/bundles.php
return [
// ...
HalloVerden\DoctrineSqlLoggerBundle\HalloVerdenDoctrineSqlLoggerBundle::class => ['all' => true],
];
By default, all you have to do is require this bundle and it wil log query execution time on the default connection for all queries that takes more than 100 ms.
hallo_verden_doctrine_sql_logger:
loggers:
HalloVerden\DoctrineSqlLoggerBundle\Loggers\QueryExecutionTimeLogger:
enabled: true
connections:
- default
Set enabled to false to disable QueryExecutionTimeLogger. And you can add the connections you want to enable logging on.
You can also add your own loggers by adding them to loggers in the config.
if you want to log backtrace of the query with QueryExecutionTimeLogger add this to services.yaml:
HalloVerden\DoctrineSqlLoggerBundle\Loggers\QueryExecutionTimeLogger:
calls:
- ['setEnableBacktrace', [true]]
if you want to change the execution time threshold for logging add this to services.yaml:
HalloVerden\DoctrineSqlLoggerBundle\Loggers\QueryExecutionTimeLogger:
calls:
- ['setExecutionTimeThreshold', [150]]