0.4.0 • Published 4 years ago

@opentelemetry/scope-zone v0.4.0

Weekly downloads
4
License
Apache-2.0
Repository
github
Last release
4 years ago

OpenTelemetry Scope Zone

Gitter chat NPM Published Version dependencies devDependencies Apache License

This module provides Zone Scope Manager with bundled zone-js for Web applications. If you have your own zone-js please use @opentelemetry/scope-zone-peer-dep If you use Angular it means you already have the zone-js and you should use @opentelemetry/scope-zone-peer-dep

Installation

npm install --save @opentelemetry/scope-zone

Usage

import { ConsoleSpanExporter, SimpleSpanProcessor } from '@opentelemetry/tracing';
import { WebTracer } from '@opentelemetry/web';
import { ZoneScopeManager } from '@opentelemetry/scope-zone';

const webTracerWithZone = new WebTracer({
  scopeManager: new ZoneScopeManager()
});
webTracerWithZone.addSpanProcessor(new SimpleSpanProcessor(new ConsoleSpanExporter()));

// Example how the ZoneScopeManager keeps the reference to the correct scope during async operations
const span1 = webTracerWithZone.startSpan('foo1');
webTracerWithZone.withSpan(span1, () => {
  console.log('Current span is span1', webTracerWithZone.getCurrentSpan() === span1);
  setTimeout(() => {
    const span2 = webTracerWithZone.startSpan('foo2');
    console.log('Current span is span1', webTracerWithZone.getCurrentSpan() === span1);
    webTracerWithZone.withSpan(span2, () => {
      console.log('Current span is span2', webTracerWithZone.getCurrentSpan() === span2);
      setTimeout(() => {
        console.log('Current span is span2', webTracerWithZone.getCurrentSpan() === span2);
      }, 500);
    });
    // there is a timeout which still keeps span2 active
    console.log('Current span is span2', webTracerWithZone.getCurrentSpan() === span2);
  }, 500);
  console.log('Current span is span1', webTracerWithZone.getCurrentSpan() === span1);
});

Useful links

License

Apache 2.0 - See LICENSE for more information.