From e6bff045c994de097f2feca67d53753c8e08a552 Mon Sep 17 00:00:00 2001 From: Kris Wallsmith Date: Mon, 13 Sep 2010 14:10:51 -0700 Subject: [PATCH] [DoctrineMongoDBBundle] added a quick profiler panel --- .../DoctrineMongoDBDataCollector.php | 6 +++++ .../Logger/DoctrineMongoDBLogger.php | 24 ++++++++++++++++++- .../Resources/views/Profiler/mongodb_menu.php | 1 + .../views/Profiler/mongodb_panel.php | 13 +++++++++- 4 files changed, 42 insertions(+), 2 deletions(-) diff --git a/src/Symfony/Bundle/DoctrineMongoDBBundle/DataCollector/DoctrineMongoDBDataCollector.php b/src/Symfony/Bundle/DoctrineMongoDBBundle/DataCollector/DoctrineMongoDBDataCollector.php index 0574ccf2cd..ec89d4096c 100644 --- a/src/Symfony/Bundle/DoctrineMongoDBBundle/DataCollector/DoctrineMongoDBDataCollector.php +++ b/src/Symfony/Bundle/DoctrineMongoDBBundle/DataCollector/DoctrineMongoDBDataCollector.php @@ -27,6 +27,7 @@ class DoctrineMongoDBDataCollector extends DataCollector public function collect(Request $request, Response $response, \Exception $exception = null) { $this->data['nb_queries'] = $this->logger->getNbQueries(); + $this->data['queries'] = $this->logger->getQueries(); } public function getQueryCount() @@ -34,6 +35,11 @@ class DoctrineMongoDBDataCollector extends DataCollector return $this->data['nb_queries']; } + public function getQueries() + { + return $this->data['queries']; + } + /** * {@inheritdoc} */ diff --git a/src/Symfony/Bundle/DoctrineMongoDBBundle/Logger/DoctrineMongoDBLogger.php b/src/Symfony/Bundle/DoctrineMongoDBBundle/Logger/DoctrineMongoDBLogger.php index 24e2d6f95e..522e95d7ec 100644 --- a/src/Symfony/Bundle/DoctrineMongoDBBundle/Logger/DoctrineMongoDBLogger.php +++ b/src/Symfony/Bundle/DoctrineMongoDBBundle/Logger/DoctrineMongoDBLogger.php @@ -12,6 +12,8 @@ use Symfony\Component\Yaml\Yaml; */ class DoctrineMongoDBLogger { + const LOG_PREFIX = 'MongoDB query: '; + protected $logger; protected $nbQueries; @@ -26,7 +28,7 @@ class DoctrineMongoDBLogger ++$this->nbQueries; if (null !== $this->logger) { - $this->logger->info(static::formatQuery($query)); + $this->logger->info(static::LOG_PREFIX.static::formatQuery($query)); } } @@ -35,6 +37,26 @@ class DoctrineMongoDBLogger return $this->nbQueries; } + public function getQueries() + { + $logger = $this->logger->getDebugLogger(); + + if (!$logger) { + return false; + } + + $offset = strlen(static::LOG_PREFIX); + $mapper = function($log) use($offset) + { + if (0 === strpos($log['message'], DoctrineMongoDBLogger::LOG_PREFIX)) { + return substr($log['message'], $offset); + } + }; + + // map queries from logs, remove empty entries and re-index the array + return array_values(array_filter(array_map($mapper, $logger->getLogs()))); + } + /** * Formats the supplied query array recursively. * diff --git a/src/Symfony/Bundle/DoctrineMongoDBBundle/Resources/views/Profiler/mongodb_menu.php b/src/Symfony/Bundle/DoctrineMongoDBBundle/Resources/views/Profiler/mongodb_menu.php index a9f0653990..397a25a5c7 100644 --- a/src/Symfony/Bundle/DoctrineMongoDBBundle/Resources/views/Profiler/mongodb_menu.php +++ b/src/Symfony/Bundle/DoctrineMongoDBBundle/Resources/views/Profiler/mongodb_menu.php @@ -1,2 +1,3 @@ +
getQueryCount() ?>
Doctrine MongoDB \ No newline at end of file diff --git a/src/Symfony/Bundle/DoctrineMongoDBBundle/Resources/views/Profiler/mongodb_panel.php b/src/Symfony/Bundle/DoctrineMongoDBBundle/Resources/views/Profiler/mongodb_panel.php index 2ff500e568..a37bde12d1 100644 --- a/src/Symfony/Bundle/DoctrineMongoDBBundle/Resources/views/Profiler/mongodb_panel.php +++ b/src/Symfony/Bundle/DoctrineMongoDBBundle/Resources/views/Profiler/mongodb_panel.php @@ -1,6 +1,17 @@

Queries

-getQueryCount()): ?> +getQueries()): ?> + Query logging is disabled. +getQueryCount()): ?> No queries. +