diff --git a/packages/web/src/exporter.js b/packages/web/src/exporter.js index 29aeab3..b4a28b7 100644 --- a/packages/web/src/exporter.js +++ b/packages/web/src/exporter.js @@ -6,6 +6,7 @@ import EpsagonFormatter from './formatter'; import EpsagonResourceManager from './resource-manager'; import EpsagonIPCalculator from './ip-calculator'; import EpsagonUtils from './utils'; +import {loggingErrorHandler} from "@opentelemetry/core"; const rootType = { EPS: 'epsagon_init', @@ -223,6 +224,10 @@ class EpsagonExporter extends CollectorTraceExporter { }); return { attributesLength, span, spanAttributes }; } + + send(objects, onSuccess, onError) { + super.send(objects, onSuccess, loggingErrorHandler()); + } } export default EpsagonExporter; diff --git a/packages/web/src/web-tracer.js b/packages/web/src/web-tracer.js index 4ff7aea..3366552 100644 --- a/packages/web/src/web-tracer.js +++ b/packages/web/src/web-tracer.js @@ -11,6 +11,10 @@ import EpsagonDocumentLoadInstrumentation from './instrumentation/documentLoadIn import EpsagonExporter from './exporter'; import EpsagonUtils from './utils'; import EpsagonRedirectInstrumentation from './instrumentation/redirectInstrumentation'; +import { + setGlobalErrorHandler, + loggingErrorHandler, globalErrorHandler +} from "@opentelemetry/core"; const { CompositePropagator, HttpTraceContextPropagator } = require('@opentelemetry/core'); const parser = require('ua-parser-js'); @@ -21,6 +25,7 @@ let epsSpan; const DEFAULT_APP_NAME = 'Epsagon Application'; const PAGE_LOAD_TIMEOUT = 30000; + class EpsagonSpan { constructor(tracer) { const span = tracer.startSpan('epsagon_init', { @@ -140,6 +145,8 @@ function init(_configData) { metadataOnly: configData.metadataOnly, }; + setGlobalErrorHandler(loggingErrorHandler()); + const provider = new WebTracerProvider(); /* eslint-disable no-undef */ @@ -147,6 +154,7 @@ function init(_configData) { const exporter = new EpsagonExporter(collectorOptions, userAgent); + provider.addSpanProcessor(new BatchSpanProcessor(exporter)); provider.register({