Merge remote branch 'stof/zend_config'
* stof/zend_config: Changed default priority to INFO [ZendBundle] Added a Configuration class
This commit is contained in:
commit
5b92dcf9dd
@ -0,0 +1,48 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the Symfony package.
|
||||
*
|
||||
* (c) Fabien Potencier <fabien.potencier@symfony-project.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Symfony\Bundle\ZendBundle\DependencyInjection;
|
||||
|
||||
use Symfony\Component\Config\Definition\Builder\NodeBuilder;
|
||||
use Symfony\Component\Config\Definition\Builder\TreeBuilder;
|
||||
|
||||
/**
|
||||
* This class contains the configuration information for the bundle
|
||||
*
|
||||
* This information is solely responsible for how the different configuration
|
||||
* sections are normalized, and merged.
|
||||
*
|
||||
* @author Christophe Coevoet <stof@notk.org>
|
||||
*/
|
||||
class Configuration
|
||||
{
|
||||
/**
|
||||
* Generates the configuration tree.
|
||||
*
|
||||
* @return \Symfony\Component\Config\Definition\NodeInterface
|
||||
*/
|
||||
public function getConfigTree()
|
||||
{
|
||||
$treeBuilder = new TreeBuilder();
|
||||
$rootNode = $treeBuilder->root('zend', 'array');
|
||||
|
||||
$rootNode
|
||||
->arrayNode('logger')
|
||||
->canBeUnset()
|
||||
->scalarNode('priority')->defaultValue('INFO')->end()
|
||||
->scalarNode('path')->defaultValue('%kernel.logs_dir%/%kernel.environment%.log')->end()
|
||||
->booleanNode('log_errors')->defaultFalse()->end()
|
||||
->end()
|
||||
;
|
||||
|
||||
return $treeBuilder->buildTree();
|
||||
}
|
||||
}
|
@ -15,6 +15,7 @@ use Symfony\Component\HttpKernel\DependencyInjection\Extension;
|
||||
use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
|
||||
use Symfony\Component\DependencyInjection\ContainerBuilder;
|
||||
use Symfony\Component\Config\FileLocator;
|
||||
use Symfony\Component\Config\Definition\Processor;
|
||||
|
||||
/**
|
||||
* ZendExtension is an extension for the Zend Framework libraries.
|
||||
@ -37,52 +38,27 @@ class ZendExtension extends Extension
|
||||
*/
|
||||
public function load(array $configs, ContainerBuilder $container)
|
||||
{
|
||||
$first = true;
|
||||
foreach ($configs as $config) {
|
||||
if (!isset($config['logger'])) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if ($first) {
|
||||
$first = false;
|
||||
$configuration = new Configuration();
|
||||
$processor = new Processor();
|
||||
$config = $processor->process($configuration->getConfigTree(), $configs);
|
||||
|
||||
if (isset($config['logger'])) {
|
||||
$loader = new XmlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
|
||||
$loader->load('logger.xml');
|
||||
$container->setAlias('logger', 'zend.logger');
|
||||
}
|
||||
|
||||
$this->registerLoggerConfiguration($config, $container);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads the logger configuration.
|
||||
*
|
||||
* Usage example:
|
||||
*
|
||||
* <zend:logger priority="info" path="/path/to/some.log" />
|
||||
*
|
||||
* @param array $config An array of configuration settings
|
||||
* @param ContainerBuilder $container A ContainerBuilder instance
|
||||
*/
|
||||
protected function registerLoggerConfiguration($config, ContainerBuilder $container)
|
||||
{
|
||||
$config = $config['logger'];
|
||||
|
||||
if (isset($config['priority'])) {
|
||||
$container->setParameter('zend.logger.priority', is_int($config['priority']) ? $config['priority'] : constant('\\Zend\\Log\\Logger::'.strtoupper($config['priority'])));
|
||||
}
|
||||
|
||||
if (isset($config['path'])) {
|
||||
$container->setParameter('zend.logger.path', $config['path']);
|
||||
}
|
||||
|
||||
if (isset($config['log_errors'])) {
|
||||
$definition = $container->findDefinition('zend.logger');
|
||||
if (false === $config['log_errors'] && $definition->hasMethodCall('registerErrorHandler')) {
|
||||
$container->findDefinition('zend.logger')->removeMethodCall('registerErrorHandler');
|
||||
} else {
|
||||
if ($config['log_errors']) {
|
||||
$container->findDefinition('zend.logger')->addMethodCall('registerErrorHandler');
|
||||
} else {
|
||||
if ($definition->hasMethodCall('registerErrorHandler')) {
|
||||
$container->findDefinition('zend.logger')->removeMethodCall('registerErrorHandler');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -6,7 +6,6 @@
|
||||
|
||||
<parameters>
|
||||
<parameter key="zend.logger.class">Symfony\Bundle\ZendBundle\Logger\Logger</parameter>
|
||||
<parameter key="zend.logger.priority" type="constant">Zend\Log\Logger::CRIT</parameter>
|
||||
<parameter key="zend.logger.log_errors">true</parameter>
|
||||
<parameter key="zend.logger.writer.debug.class">Symfony\Bundle\ZendBundle\Logger\DebugLogger</parameter>
|
||||
<parameter key="zend.logger.writer.filesystem.class">Zend\Log\Writer\Stream</parameter>
|
||||
|
Reference in New Issue
Block a user