diff --git a/DependencyInjection/Configuration.php b/DependencyInjection/Configuration.php index 1269c3b9..78718d7d 100644 --- a/DependencyInjection/Configuration.php +++ b/DependencyInjection/Configuration.php @@ -292,6 +292,7 @@ public function getConfigTreeBuilder() ->scalarNode('priority')->defaultValue(0)->end() ->scalarNode('level')->defaultValue('DEBUG')->end() ->booleanNode('bubble')->defaultTrue()->end() + ->booleanNode('include_stacktraces')->defaultFalse()->end() ->scalarNode('path')->defaultValue('%kernel.logs_dir%/%kernel.environment%.log')->end() // stream and rotating ->scalarNode('file_permission') // stream and rotating ->defaultNull() diff --git a/DependencyInjection/MonologExtension.php b/DependencyInjection/MonologExtension.php index 60afadae..c411d530 100644 --- a/DependencyInjection/MonologExtension.php +++ b/DependencyInjection/MonologExtension.php @@ -130,6 +130,10 @@ private function buildHandler(ContainerBuilder $container, $name, array $handler $definition = new Definition(sprintf('%%monolog.handler.%s.class%%', $handler['type'])); $handler['level'] = $this->levelToMonologConst($handler['level']); + if ($handler['include_stacktraces']) { + $definition->setConfigurator(array('Symfony\\Bundle\\MonologBundle\\MonologBundle', 'includeStacktraces')); + } + switch ($handler['type']) { case 'service': $container->setAlias($handlerId, $handler['id']); diff --git a/MonologBundle.php b/MonologBundle.php index 9a846bf9..5d9b04db 100644 --- a/MonologBundle.php +++ b/MonologBundle.php @@ -11,6 +11,8 @@ namespace Symfony\Bundle\MonologBundle; +use Monolog\Formatter\LineFormatter; +use Monolog\Handler\HandlerInterface; use Symfony\Bundle\MonologBundle\DependencyInjection\Compiler\AddSwiftMailerTransportPass; use Symfony\Component\HttpKernel\Bundle\Bundle; use Symfony\Component\DependencyInjection\ContainerBuilder; @@ -34,4 +36,15 @@ public function build(ContainerBuilder $container) $container->addCompilerPass(new AddProcessorsPass()); $container->addCompilerPass(new AddSwiftMailerTransportPass()); } + + /** + * @internal + */ + public static function includeStacktraces(HandlerInterface $handler) + { + $formatter = $handler->getFormatter(); + if ($formatter instanceof LineFormatter) { + $formatter->includeStacktraces(); + } + } } diff --git a/composer.json b/composer.json index d87302b7..a2243d24 100644 --- a/composer.json +++ b/composer.json @@ -21,7 +21,7 @@ "symfony/dependency-injection": "~2.3|~3.0", "symfony/config": "~2.3|~3.0", "symfony/http-kernel": "~2.3|~3.0", - "monolog/monolog": "~1.8" + "monolog/monolog": "~1.12" }, "require-dev": { "symfony/yaml": "~2.3|~3.0",