diff --git a/src/Symfony/Bundle/DoctrineMongoDBBundle/DataCollector/DoctrineMongoDBDataCollector.php b/src/Symfony/Bundle/DoctrineMongoDBBundle/DataCollector/DoctrineMongoDBDataCollector.php
new file mode 100644
index 0000000000..620efb0ea9
--- /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 0247739554..1ded0d2c15 100755
--- a/src/Symfony/Bundle/DoctrineMongoDBBundle/DependencyInjection/DoctrineMongoDBExtension.php
+++ b/src/Symfony/Bundle/DoctrineMongoDBBundle/DependencyInjection/DoctrineMongoDBExtension.php
@@ -129,6 +129,7 @@ class DoctrineMongoDBExtension extends Extension
'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 0000000000..4216a5ae7d
--- /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 091a6f8168..fa41a2ce50 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 @@
+
+
+
+
+
+
+
+
+