opentelemetry-js/packages/opentelemetry-context-zone-...
Daniel Dyla c5ed47d413
chore: 0.6.1 release proposal (#951)
2020-04-08 14:24:15 -04:00
..
src chore: 0.6.1 release proposal (#951) 2020-04-08 14:24:15 -04:00
test Rename scope to context (#853) 2020-03-13 15:01:07 -04:00
LICENSE Rename scope to context (#853) 2020-03-13 15:01:07 -04:00
README.md Rename scope to context (#853) 2020-03-13 15:01:07 -04:00
karma.conf.js Rename scope to context (#853) 2020-03-13 15:01:07 -04:00
package.json chore: 0.6.1 release proposal (#951) 2020-04-08 14:24:15 -04:00
tsconfig.json Rename scope to context (#853) 2020-03-13 15:01:07 -04:00
tslint.json Rename scope to context (#853) 2020-03-13 15:01:07 -04:00

README.md

OpenTelemetry Context Zone Peer Dependency

Gitter chat NPM Published Version dependencies devDependencies Apache License

This module provides Zone Context Manager with a peer dependency for zone-js for Web applications. If you use Angular you already have the zone-js and you should use this package. If you don't have your own zone-js please use @opentelemetry/context-zone

Installation

npm install --save @opentelemetry/context-zone-peer-dep

Usage

import { ConsoleSpanExporter, SimpleSpanProcessor } from '@opentelemetry/tracing';
import { WebTracer } from '@opentelemetry/web';
import { ZoneContextManager } from '@opentelemetry/context-zone-peer-dep';

const webTracerWithZone = new WebTracer({
  contextManager: new ZoneContextManager()
});
webTracerWithZone.addSpanProcessor(new SimpleSpanProcessor(new ConsoleSpanExporter()));

// Example how the ZoneContextManager keeps the reference to the correct context 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);
});

License

Apache 2.0 - See LICENSE for more information.