tourze/doctrine-logger-bundle
最新稳定版本:1.0.2
Composer 安装命令:
composer require tourze/doctrine-logger-bundle
包简介
Doctrine Logger Bundle
README 文档
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.
统计信息
- 总下载量: 32
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 0
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-04-12