Sfoglia il codice sorgente

[DoctrineMongoDBBundle] added logger and data collector for WDT

Kris Wallsmith 14 anni fa
parent
commit
69f9d9c6bf

File diff suppressed because it is too large
+ 40 - 0
src/Symfony/Bundle/DoctrineMongoDBBundle/DataCollector/DoctrineMongoDBDataCollector.php


+ 1 - 0
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));

+ 43 - 0
src/Symfony/Bundle/DoctrineMongoDBBundle/Logger/DoctrineMongoDBLogger.php

@@ -0,0 +1,43 @@
+<?php
+
+namespace Symfony\Bundle\DoctrineMongoDBBundle\Logger;
+
+use Symfony\Component\HttpKernel\Log\LoggerInterface;
+use Symfony\Component\Yaml\Yaml;
+
+/**
+ * Logger for the Doctrine MongoDB ODM.
+ * 
+ * @author Kris Wallsmith <kris.wallsmith@symfony-project.com>
+ */
+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;
+    }
+}

+ 11 - 0
src/Symfony/Bundle/DoctrineMongoDBBundle/Resources/config/mongodb.xml

@@ -12,6 +12,8 @@
     <parameter key="doctrine.odm.mongodb.connection_class">Doctrine\ODM\MongoDB\Mongo</parameter>
     <parameter key="doctrine.odm.mongodb.configuration_class">Doctrine\ODM\MongoDB\Configuration</parameter>
     <parameter key="doctrine.odm.mongodb.document_manager_class">Doctrine\ODM\MongoDB\DocumentManager</parameter>
+    <parameter key="doctrine.odm.mongodb.logger_class">Symfony\Bundle\DoctrineMongoDBBundle\Logger\DoctrineMongoDBLogger</parameter>
+    <parameter key="doctrine.odm.mongodb.data_collector_class">Symfony\Bundle\DoctrineMongoDBBundle\DataCollector\DoctrineMongoDBDataCollector</parameter>
 
     <!-- proxies -->
     <parameter key="doctrine.odm.mongodb.proxy_namespace">Proxies</parameter>
@@ -61,5 +63,14 @@
 
     <!-- cache -->
     <service id="doctrine.odm.mongodb.cache.array" class="%doctrine.odm.mongodb.cache.array_class%" />
+
+    <!-- logger -->
+    <service id="doctrine.odm.mongodb.logger" class="%doctrine.odm.mongodb.logger_class%">
+      <argument type="service" id="logger" on-invalid="null" />
+     </service>
+    <service id="doctrine.odm.mongodb.data_collector" class="%doctrine.odm.mongodb.data_collector_class%">
+      <tag name="data_collector" />
+      <argument type="service" id="doctrine.odm.mongodb.logger" />
+    </service>
   </services>
 </container>