tracerProvider.getTracer = function()

in src/diagnostic-channel-publishers/src/azure-coretracing.pub.ts [58:75]


                tracerProvider.getTracer = function(tracerName, version) {
                    const tracer = getTracerOriginal.call(this, tracerName, version);
                    if (!tracer[exports.AzureMonitorSymbol]) { // Avoid patching multiple times
                        const startSpanOriginal = tracer.startSpan;
                        tracer.startSpan = function(spanName: string, options?: opentelemetryTypes.SpanOptions, context?: opentelemetryTypes.Context) {
                            const span = startSpanOriginal.call(this, spanName, options, context);
                            const originalEnd = span.end;
                            span.end = function() {
                                const result = originalEnd.apply(this, arguments);
                                channel.publish("azure-coretracing", span);
                                return result;
                            };
                            return span;
                        };
                        tracer[AzureMonitorSymbol] = true;
                    }
                    return tracer;
                };