[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'),
|
'setProxyNamespace' => $container->getParameter('doctrine.odm.mongodb.proxy_namespace'),
|
||||||
'setAutoGenerateProxyClasses' => $container->getParameter('doctrine.odm.mongodb.auto_generate_proxy_classes'),
|
'setAutoGenerateProxyClasses' => $container->getParameter('doctrine.odm.mongodb.auto_generate_proxy_classes'),
|
||||||
'setDefaultDB' => $defaultDatabase,
|
'setDefaultDB' => $defaultDatabase,
|
||||||
|
'setLoggerCallable' => array(new Reference('doctrine.odm.mongodb.logger'), 'logQuery'),
|
||||||
);
|
);
|
||||||
foreach ($methods as $method => $arg) {
|
foreach ($methods as $method => $arg) {
|
||||||
$odmConfigDef->addMethodCall($method, array($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.connection_class">Doctrine\ODM\MongoDB\Mongo</parameter>
|
||||||
<parameter key="doctrine.odm.mongodb.configuration_class">Doctrine\ODM\MongoDB\Configuration</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.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 -->
|
<!-- proxies -->
|
||||||
<parameter key="doctrine.odm.mongodb.proxy_namespace">Proxies</parameter>
|
<parameter key="doctrine.odm.mongodb.proxy_namespace">Proxies</parameter>
|
||||||
@ -61,5 +63,14 @@
|
|||||||
|
|
||||||
<!-- cache -->
|
<!-- cache -->
|
||||||
<service id="doctrine.odm.mongodb.cache.array" class="%doctrine.odm.mongodb.cache.array_class%" />
|
<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>
|
</services>
|
||||||
</container>
|
</container>
|
||||||
|
Reference in New Issue
Block a user