9
9
use Illuminate \Queue \Events \WorkerStopping ;
10
10
use Illuminate \Support \ServiceProvider ;
11
11
use OpenTelemetry \API \LoggerHolder ;
12
+ use OpenTelemetry \API \Logs \LoggerProviderInterface ;
12
13
use OpenTelemetry \API \Metrics \MeterProviderInterface ;
13
14
use OpenTelemetry \API \Trace \TracerProviderInterface ;
14
- use OpenTelemetry \SDK \Common \Attribute \Attributes ;
15
15
use OpenTelemetry \SDK \Common \Configuration \Resolver \CompositeResolver ;
16
- use OpenTelemetry \SDK \Common \Instrumentation \InstrumentationScopeFactory ;
17
- use OpenTelemetry \SDK \Common \Time \ClockFactory ;
18
- use OpenTelemetry \SDK \Metrics \Exemplar \ExemplarFilter \WithSampledTraceExemplarFilter ;
19
- use OpenTelemetry \SDK \Metrics \MeterProvider ;
16
+ use OpenTelemetry \SDK \Logs \LoggerProviderFactory ;
17
+ use OpenTelemetry \SDK \Logs \LoggerProviderInterface as LoggerProviderSdkInterface ;
18
+ use OpenTelemetry \SDK \Metrics \MeterProviderFactory ;
20
19
use OpenTelemetry \SDK \Metrics \MeterProviderInterface as MeterProviderSdkInterface ;
21
- use OpenTelemetry \SDK \Metrics \MetricReader \ExportingReader ;
22
- use OpenTelemetry \SDK \Metrics \StalenessHandler \NoopStalenessHandlerFactory ;
23
- use OpenTelemetry \SDK \Metrics \View \CriteriaViewRegistry ;
24
- use OpenTelemetry \SDK \Registry ;
25
- use OpenTelemetry \SDK \Resource \ResourceInfoFactory ;
26
20
use OpenTelemetry \SDK \Trace \TracerProviderFactory ;
27
21
use OpenTelemetry \SDK \Trace \TracerProviderInterface as TracerProviderSdkInterface ;
28
22
use Psr \Log \LoggerInterface ;
@@ -31,35 +25,19 @@ class LaravelTelemetryServiceProvider extends ServiceProvider
31
25
{
32
26
public function register (): void
33
27
{
34
- $ this ->app ->singleton (MeterProviderSdkInterface::class, function () {
35
- if (! $ this ->app ->make (Repository::class)->get ('telemetry.enabled ' )) {
36
- return null ;
37
- }
28
+ $ this ->app ->singleton (LoggerProviderSdkInterface::class, function () {
29
+ return (new LoggerProviderFactory ())->create ();
30
+ });
38
31
39
- return new MeterProvider (
40
- null ,
41
- ResourceInfoFactory::defaultResource (),
42
- ClockFactory::getDefault (),
43
- Attributes::factory (),
44
- new InstrumentationScopeFactory (Attributes::factory ()),
45
- [
46
- new ExportingReader (
47
- Registry::metricExporterFactory ('otlp ' )->create (),
48
- ),
49
- ],
50
- new CriteriaViewRegistry (),
51
- new WithSampledTraceExemplarFilter (),
52
- new NoopStalenessHandlerFactory (),
53
- );
32
+ $ this ->app ->bind (LoggerProviderInterface::class, LoggerProviderSdkInterface::class);
33
+
34
+ $ this ->app ->singleton (MeterProviderSdkInterface::class, function () {
35
+ return (new MeterProviderFactory ())->create ();
54
36
});
55
37
56
38
$ this ->app ->bind (MeterProviderInterface::class, MeterProviderSdkInterface::class);
57
39
58
40
$ this ->app ->singleton (TracerProviderSdkInterface::class, function () {
59
- if (! $ this ->app ->make (Repository::class)->get ('telemetry.enabled ' )) {
60
- return null ;
61
- }
62
-
63
41
return (new TracerProviderFactory ())->create ();
64
42
});
65
43
@@ -77,42 +55,18 @@ public function boot(): void
77
55
'telemetry ' ,
78
56
);
79
57
80
- $ this ->app ->beforeResolving (MeterProviderInterface::class, function () {
81
- if (! $ this ->app ->make (Repository::class)->get ('telemetry.enabled ' )) {
82
- return ;
83
- }
84
-
85
- /** @var LoggerInterface $logger */
86
- $ logger = $ this ->app ->get (LoggerInterface::class);
87
- /** @var ConfigConfigurationResolver $configResolver */
88
- $ configResolver = $ this ->app ->get (ConfigConfigurationResolver::class);
89
- LoggerHolder::set ($ logger );
90
- CompositeResolver::instance ()->addResolver ($ configResolver );
91
- });
92
-
93
- $ this ->app ->beforeResolving (TracerProviderInterface::class, function () {
94
- if (! $ this ->app ->make (Repository::class)->get ('telemetry.enabled ' )) {
95
- return ;
96
- }
97
-
98
- /** @var LoggerInterface $logger */
99
- $ logger = $ this ->app ->get (LoggerInterface::class);
100
- /** @var ConfigConfigurationResolver $configResolver */
101
- $ configResolver = $ this ->app ->get (ConfigConfigurationResolver::class);
102
- LoggerHolder::set ($ logger );
103
- CompositeResolver::instance ()->addResolver ($ configResolver );
104
- });
58
+ $ this ->prepareConfigResolver ();
105
59
106
60
$ this ->callAfterResolving (Dispatcher::class, function (Dispatcher $ event ) {
107
- if (! $ this ->app ->make (Repository::class)->get ('telemetry.enabled ' )) {
61
+ if ($ this ->app ->make (Repository::class)->get ('telemetry.sdk.disabled ' )) {
108
62
return ;
109
63
}
110
64
111
65
$ event ->listen (WorkerStopping::class, WorkerStoppingFlush::class);
112
66
});
113
67
114
68
$ this ->app ->terminating (function () {
115
- if (! $ this ->app ->make (Repository::class)->get ('telemetry.enabled ' )) {
69
+ if ($ this ->app ->make (Repository::class)->get ('telemetry.sdk.disabled ' )) {
116
70
return ;
117
71
}
118
72
@@ -129,4 +83,15 @@ public function boot(): void
129
83
}
130
84
});
131
85
}
86
+
87
+ private function prepareConfigResolver (): void
88
+ {
89
+ /** @var LoggerInterface $logger */
90
+ $ logger = $ this ->app ->get (LoggerInterface::class);
91
+
92
+ LoggerHolder::set ($ logger );
93
+ CompositeResolver::instance ()->addResolver (
94
+ new ConfigConfigurationResolver ()
95
+ );
96
+ }
132
97
}
0 commit comments