25
25
use Symfony \Bridge \Monolog \Processor \TokenProcessor ;
26
26
use Symfony \Bridge \Monolog \Processor \WebProcessor ;
27
27
use Symfony \Component \Config \FileLocator ;
28
+ use Symfony \Component \DependencyInjection \Argument \AbstractArgument ;
28
29
use Symfony \Component \DependencyInjection \Argument \BoundArgument ;
29
30
use Symfony \Component \DependencyInjection \ChildDefinition ;
30
31
use Symfony \Component \DependencyInjection \ContainerBuilder ;
@@ -47,6 +48,8 @@ class MonologExtension extends Extension
47
48
{
48
49
private $ nestedHandlers = [];
49
50
51
+ private $ sentryBreadcrumbHandlers = [];
52
+
50
53
private $ swiftMailerHandlers = [];
51
54
52
55
/**
@@ -79,6 +82,11 @@ public function load(array $configs, ContainerBuilder $container)
79
82
];
80
83
}
81
84
85
+ foreach ($ this ->sentryBreadcrumbHandlers as $ sentryBreadcrumbHandlerId => $ sentryHandlerId ) {
86
+ $ hubId = (string ) $ container ->getDefinition ($ sentryHandlerId )->getArgument (0 );
87
+ $ container ->getDefinition ($ sentryBreadcrumbHandlerId )->replaceArgument (0 , new Reference ($ hubId ));
88
+ }
89
+
82
90
$ container ->setParameter (
83
91
'monolog.swift_mailer.handlers ' ,
84
92
$ this ->swiftMailerHandlers
@@ -724,7 +732,7 @@ private function buildHandler(ContainerBuilder $container, $name, array $handler
724
732
725
733
case 'sentry ' :
726
734
if (null !== $ handler ['hub_id ' ]) {
727
- $ hub = new Reference ( $ handler ['hub_id ' ]) ;
735
+ $ hubId = $ handler ['hub_id ' ];
728
736
} else {
729
737
if (null !== $ handler ['client_id ' ]) {
730
738
$ clientId = $ handler ['client_id ' ];
@@ -755,24 +763,34 @@ private function buildHandler(ContainerBuilder $container, $name, array $handler
755
763
}
756
764
}
757
765
758
- $ hub = new Definition (
766
+ $ hubId = \sprintf ('monolog.handler.%s.hub ' , $ name );
767
+ $ hub = $ container ->setDefinition ($ hubId , new Definition (
759
768
'Sentry \\State \\Hub ' ,
760
769
[new Reference ($ clientId )]
761
- );
762
- $ container ->setDefinition (\sprintf ('monolog.handler.%s.hub ' , $ name ), $ hub );
770
+ ));
763
771
764
772
// can't set the hub to the current hub, getting into a recursion otherwise...
765
773
// $hub->addMethodCall('setCurrent', array($hub));
766
774
}
767
775
768
776
$ definition ->setArguments ([
769
- $ hub ,
777
+ new Reference ( $ hubId ) ,
770
778
$ handler ['level ' ],
771
779
$ handler ['bubble ' ],
772
780
$ handler ['fill_extra_context ' ],
773
781
]);
774
782
break ;
775
783
784
+ case 'sentry_breadcrumb ' :
785
+ $ this ->sentryBreadcrumbHandlers [$ handlerId ] = $ this ->getHandlerId ($ handler ['sentry_handler ' ]);
786
+
787
+ $ definition ->setArguments ([
788
+ new AbstractArgument ('Sentry hub id ' ),
789
+ $ handler ['level ' ],
790
+ $ handler ['bubble ' ],
791
+ ]);
792
+ break ;
793
+
776
794
case 'raven ' :
777
795
if (null !== $ handler ['client_id ' ]) {
778
796
$ clientId = $ handler ['client_id ' ];
@@ -977,6 +995,7 @@ private function getHandlerClassByType($handlerType)
977
995
'pushover ' => 'Monolog\Handler\PushoverHandler ' ,
978
996
'raven ' => 'Monolog\Handler\RavenHandler ' ,
979
997
'sentry ' => 'Sentry\Monolog\Handler ' ,
998
+ 'sentry_breadcrumb ' => 'Sentry\Monolog\BreadcrumbHandler ' ,
980
999
'newrelic ' => 'Monolog\Handler\NewRelicHandler ' ,
981
1000
'hipchat ' => 'Monolog\Handler\HipChatHandler ' ,
982
1001
'slack ' => 'Monolog\Handler\SlackHandler ' ,
0 commit comments