Skip to content

Commit

Permalink
[DoctrineMongoDBBundle] added logger and data collector for WDT
Browse files Browse the repository at this point in the history
  • Loading branch information
kriswallsmith authored and fabpot committed Aug 25, 2010
1 parent bf67562 commit 69f9d9c
Show file tree
Hide file tree
Showing 4 changed files with 95 additions and 0 deletions.
@@ -0,0 +1,40 @@
<?php

namespace Symfony\Bundle\DoctrineMongoDBBundle\DataCollector;

use Symfony\Component\HttpKernel\Profiler\DataCollector\DataCollector;
use Symfony\Bundle\DoctrineMongoDBBundle\Logger\DoctrineMongoDBLogger;

/**
* Data collector for the Doctrine MongoDB ODM.
*
* @author Kris Wallsmith <kris.wallsmith@symfony-project.com>
*/
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('<img style="margin-left: 10px; vertical-align: middle" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAeJJREFUeNqM009r1EAUAPD3kkm22bapthSlq/EPUg9FUMSLoCAVvPUm4smr4Ico+BW89SCe6tVDj2oVLwVRS6HqTcUqwe7W7SbZbGbmzTiTvei2ML6QDAwzP968l0GtNfwdS/eu1KMSBHEytbhf9HbLdrGFiPX8i9VP/6z3YCTKvITidwETyeTN5NbZNTzFHhVZGWc/MsjTfHT5QUBKCcFMOD97be6JRhgLj0fXxy9PrXi+h6jRDfCcQ3xx+iE0/ZbgAogrCE5Gd8JzzftaKjfgHw0uBUm0JCoOpAmUUqBIgwEe4LgfO4HwdLSoQoykJJBEYGuspQaMgwU227jhBHQDFwjMZmW+Wg0BPVyJR9hVJwAT3rQkCVJbxpzZ1M0ew9ZPVWrG3YVMDKTZSDYDZY+gzYuWAs2VdHfhW3/bFq/OoEYMYB8zUkd8dgMf8zWxV+XkKRA1YNL3EGhf9uSX/ksnQCl/X7zqPCZmAVkDyDzgH3qrtCe2nACGCMV6Z7n3pv2chT6wgEG1nW1UG91lDP7jT0TfA3NxurtPv96dfOu/Pp/Oves++36buPxl2zoabHSiGlTDS9Uv24PNbOXMheRE61hrpxE14LA4APjMr8eoOQY/03RTaLVTDkrggh8K/BFgAGj/AWtED/mBAAAAAElFTkSuQmCC" />
<span style="color: %s">%d</span>
', $color, $this->data['nb_queries']);
}

public function getName()
{
return 'mongodb';
}
}
Expand Up @@ -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));
Expand Down
@@ -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;
}
}
Expand Up @@ -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>
Expand Down Expand Up @@ -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>

0 comments on commit 69f9d9c

Please sign in to comment.