for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
namespace Yoanm\Behat3SymfonyExtension\ServiceContainer\SubExtension;
use Monolog\Handler\StreamHandler;
use Monolog\Logger;
use Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Reference;
use Yoanm\Behat3SymfonyExtension\Logger\SfKernelEventLogger;
class LoggerSubExtension extends AbstractSubExtension
{
/**
* @inheritDoc
*/
public function getConfigKey()
return 'logger';
}
public function configure(ArrayNodeDefinition $builder)
$builder
->addDefaultsIfNotSet()
->children()
->scalarNode('path')
->defaultValue('var/log/behat.log')
->end()
->scalarNode('level')
->beforeNormalization()
->always()
->then(function ($value) {
return Logger::toMonologLevel($value);
})
->defaultValue(Logger::DEBUG)
->end();
* {@inheritdoc}
public function load(ContainerBuilder $container, array $config)
$loggerConfig = $config[$this->getConfigKey()];
$baseHandlerServiceId = 'logger.handler';
// Handler
$this->createService(
$container,
$baseHandlerServiceId,
StreamHandler::class,
array(
sprintf(
'%s/%s',
'%behat.paths.base%',
$loggerConfig['path']
),
$loggerConfig['level'],
)
);
// Logger
'logger',
Logger::class,
'behat3Symfony',
array('event_dispatcher.subscriber'),
'pushHandler',
array(new Reference($this->getContainerParamOrServiceId($baseHandlerServiceId)))
// SfKernelEventLogger
'logger.sf_kernel_logger',
SfKernelEventLogger::class,
new Reference($this->getContainerParamOrServiceId('kernel'))
array('event_dispatcher.subscriber')