tourze / doctrine-logger-bundle
Doctrine Logger Bundle
Installs: 29
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
pkg:composer/tourze/doctrine-logger-bundle
Requires
- ext-mbstring: *
- doctrine/dbal: ^4.0
- doctrine/doctrine-bundle: ^2.13
- doctrine/orm: ^3.0
- monolog/monolog: ^3.1
- psr/log: ^3|^2|^1
- symfony/config: ^7.3
- symfony/console: ^7.3
- symfony/dependency-injection: ^7.3
- symfony/doctrine-bridge: ^7.3
- symfony/event-dispatcher: ^7.3
- symfony/expression-language: ^7.3
- symfony/framework-bundle: ^7.3
- symfony/http-foundation: ^7.3
- symfony/http-kernel: ^7.3
- symfony/messenger: ^7.3
- symfony/monolog-bundle: ^3.10
- symfony/property-access: ^7.3
- symfony/service-contracts: ^3.6
- symfony/stopwatch: ^7.3
- symfony/yaml: ^7.3
- tourze/backtrace-helper: 1.*
- tourze/bundle-dependency: 1.*
- yiisoft/strings: ^2.1
Requires (Dev)
README
[]
(https://packagist.org/packages/tourze/doctrine-logger-bundle)
[
]
(https://github.com/tourze/php-monorepo/blob/master/LICENSE)
[
]
(https://github.com/tourze/php-monorepo/actions)
[
]
(https://codecov.io/gh/tourze/php-monorepo)
[]
(https://packagist.org/packages/tourze/doctrine-logger-bundle)
[
]
(https://packagist.org/packages/tourze/doctrine-logger-bundle)
A Symfony bundle that provides enhanced logging capabilities for Doctrine ORM queries, with a focus on performance monitoring and debugging.
Features
- Monitors SQL query execution time
- Logs queries that exceed configurable time thresholds
- Provides detailed backtrace information for slow queries
- Normalizes and truncates query parameters for better log readability
- Integrates with Symfony's Stopwatch component for precise timing
- Compatible with PSR-3 loggers
Installation
composer require tourze/doctrine-logger-bundle
Configuration
The bundle works with minimal configuration. After installation, add it to your
bundles in config/bundles.php:
<?php return [ // ... Tourze\DoctrineLoggerBundle\DoctrineLoggerBundle::class => ['all' => true], ];
Environment Variables
You can configure the bundle using the following environment variables:
SQL_LOG_LENGTH: Maximum length of SQL queries in logs (default: 1000)LOG_DB_QUERY_BACKTRACE: Enable backtrace logging for all queries (default: false)
Usage
The bundle automatically registers the QueryExecutionTimeLogger service which
monitors Doctrine queries. By default, it logs:
- All queries in development environment
- Only slow queries (exceeding threshold) in production environment
Basic Example
<?php use Tourze\DoctrineLoggerBundle\Service\QueryExecutionTimeLogger; class MyService { public function __construct( private QueryExecutionTimeLogger $queryLogger ) {} public function executeCustomQuery(string $sql, array $params): mixed { return $this->queryLogger->watch( 'my_custom_query', $sql, $params, function() use ($sql, $params) { // Execute your query here // For example: // return $this->connection->executeQuery($sql, $params) // ->fetchAllAssociative(); } ); } }
Advanced Usage
Custom Query Threshold
You can customize the slow query threshold by extending the service:
<?php use Tourze\DoctrineLoggerBundle\Service\QueryExecutionTimeLogger; class CustomQueryLogger extends QueryExecutionTimeLogger { public function __construct() { parent::__construct(); // Set custom threshold to 500ms $this->executionTimeThreshold = 500; } }
Integrating with Custom Middleware
<?php use Tourze\DoctrineLoggerBundle\Service\LogMiddleware; // In your Doctrine configuration $config = new Configuration(); $config->setMiddlewares([ new LogMiddleware($queryLogger, $stopwatch), // Other middlewares... ]);
How It Works
The bundle uses Symfony's Stopwatch component to measure query execution time. When a query exceeds the configured threshold (default: 1000ms), it logs detailed information including:
- The SQL query
- Query parameters (normalized and truncated for readability)
- Execution time
- Backtrace information (if enabled)
Requirements
This bundle requires:
- PHP 8.1 or higher
- Symfony 6.4+ or 7.x
- Doctrine ORM 3.0+
- Doctrine DBAL 4.0+
For complete dependency list, see composer.json.
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
This bundle is available under the MIT license. See the LICENSE file for more information.