packages/fxa-shared/tracing/exporters/fxa-console.ts (36 lines of code) (raw):

/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ import { ExportResult } from '@opentelemetry/core'; import { ConsoleSpanExporter, ReadableSpan, } from '@opentelemetry/sdk-trace-node'; import { TracingOpts } from '../config'; import { TracingPiiFilter } from '../pii-filters'; import { checkDuration } from './util'; import { ILogger } from '../../log'; /** Console Exporter exporter customized for FxA */ export class FxaConsoleSpanExporter extends ConsoleSpanExporter { constructor(protected readonly filter?: TracingPiiFilter) { super(); } override export( spans: ReadableSpan[], resultCallback: (result: ExportResult) => void ) { spans.forEach((x) => { checkDuration(x); this.filter?.filter(x); }); return super.export(spans, resultCallback); } } export function getConsoleTraceExporter( opts: TracingOpts, filter?: TracingPiiFilter, logger?: ILogger ) { if (!opts.console?.enabled) { return; } logger?.debug('Adding Console Exporter'); const exporter = new FxaConsoleSpanExporter(filter); return exporter; }