From 69f9d9c6bfc2fbdad11c32773e5bd10058b3c3e1 Mon Sep 17 00:00:00 2001 From: Kris Wallsmith Date: Sun, 22 Aug 2010 19:16:19 -0400 Subject: [PATCH] [DoctrineMongoDBBundle] added logger and data collector for WDT --- .../DoctrineMongoDBDataCollector.php | 40 +++++++++++++++++ .../DoctrineMongoDBExtension.php | 1 + .../Logger/DoctrineMongoDBLogger.php | 43 +++++++++++++++++++ .../Resources/config/mongodb.xml | 11 +++++ 4 files changed, 95 insertions(+) create mode 100644 src/Symfony/Bundle/DoctrineMongoDBBundle/DataCollector/DoctrineMongoDBDataCollector.php create mode 100644 src/Symfony/Bundle/DoctrineMongoDBBundle/Logger/DoctrineMongoDBLogger.php diff --git a/src/Symfony/Bundle/DoctrineMongoDBBundle/DataCollector/DoctrineMongoDBDataCollector.php b/src/Symfony/Bundle/DoctrineMongoDBBundle/DataCollector/DoctrineMongoDBDataCollector.php new file mode 100644 index 000000000000..620efb0ea99e --- /dev/null +++ b/src/Symfony/Bundle/DoctrineMongoDBBundle/DataCollector/DoctrineMongoDBDataCollector.php @@ -0,0 +1,40 @@ + + */ +class DoctrineMongoDBDataCollector extends DataCollector +{ + protected $logger; + + public function __construct(DoctrineMongoDBLogger $logger) + { + $this->logger = $logger; + } + + public function collect() + { + $this->data['nb_queries'] = $this->logger->getNbQueries(); + } + + public function getSummary() + { + $color = $this->data['nb_queries'] < 10 ? '#2d2' : '#d22'; + + return sprintf(' + %d + ', $color, $this->data['nb_queries']); + } + + public function getName() + { + return 'mongodb'; + } +} diff --git a/src/Symfony/Bundle/DoctrineMongoDBBundle/DependencyInjection/DoctrineMongoDBExtension.php b/src/Symfony/Bundle/DoctrineMongoDBBundle/DependencyInjection/DoctrineMongoDBExtension.php index 0247739554e8..1ded0d2c1501 100755 --- a/src/Symfony/Bundle/DoctrineMongoDBBundle/DependencyInjection/DoctrineMongoDBExtension.php +++ b/src/Symfony/Bundle/DoctrineMongoDBBundle/DependencyInjection/DoctrineMongoDBExtension.php @@ -129,6 +129,7 @@ protected function loadDocumentManager(array $documentManager, ContainerBuilder 'setProxyNamespace' => $container->getParameter('doctrine.odm.mongodb.proxy_namespace'), 'setAutoGenerateProxyClasses' => $container->getParameter('doctrine.odm.mongodb.auto_generate_proxy_classes'), 'setDefaultDB' => $defaultDatabase, + 'setLoggerCallable' => array(new Reference('doctrine.odm.mongodb.logger'), 'logQuery'), ); foreach ($methods as $method => $arg) { $odmConfigDef->addMethodCall($method, array($arg)); diff --git a/src/Symfony/Bundle/DoctrineMongoDBBundle/Logger/DoctrineMongoDBLogger.php b/src/Symfony/Bundle/DoctrineMongoDBBundle/Logger/DoctrineMongoDBLogger.php new file mode 100644 index 000000000000..4216a5ae7dbb --- /dev/null +++ b/src/Symfony/Bundle/DoctrineMongoDBBundle/Logger/DoctrineMongoDBLogger.php @@ -0,0 +1,43 @@ + + */ +class DoctrineMongoDBLogger +{ + protected $logger; + protected $nbQueries; + + public function __construct(LoggerInterface $logger = null) + { + $this->logger = $logger; + $this->nbQueries = 0; + } + + public function logQuery($query) + { + ++$this->nbQueries; + + if (null !== $this->logger) { + switch (key($query)) { + case 'batchInsert': + $this->logger->info(Yaml::dump(array('data' => '[omitted]') + $query, 0)); + break; + default: + $this->logger->info(Yaml::dump($query, 0)); + } + } + } + + public function getNbQueries() + { + return $this->nbQueries; + } +} diff --git a/src/Symfony/Bundle/DoctrineMongoDBBundle/Resources/config/mongodb.xml b/src/Symfony/Bundle/DoctrineMongoDBBundle/Resources/config/mongodb.xml index 091a6f816882..fa41a2ce5075 100755 --- a/src/Symfony/Bundle/DoctrineMongoDBBundle/Resources/config/mongodb.xml +++ b/src/Symfony/Bundle/DoctrineMongoDBBundle/Resources/config/mongodb.xml @@ -12,6 +12,8 @@ Doctrine\ODM\MongoDB\Mongo Doctrine\ODM\MongoDB\Configuration Doctrine\ODM\MongoDB\DocumentManager + Symfony\Bundle\DoctrineMongoDBBundle\Logger\DoctrineMongoDBLogger + Symfony\Bundle\DoctrineMongoDBBundle\DataCollector\DoctrineMongoDBDataCollector Proxies @@ -61,5 +63,14 @@ + + + + + + + + +