[DoctrineMongoDBBundle] added logger and data collector for WDT
This commit is contained in:
parent
bf67562268
commit
69f9d9c6bf
@ -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';
|
||||
}
|
||||
}
|
@ -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));
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
@ -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>
|
||||
|
Reference in New Issue
Block a user