UNPKG

@opentelemetry/api

Version:
81 lines • 2.95 kB
import { Context } from "../context/types.mjs"; import { Span } from "./span.mjs"; import { SpanOptions } from "./SpanOptions.mjs"; //#region src/trace/tracer.d.ts /** * Tracer provides an interface for creating {@link Span}s. * * @since 1.0.0 */ interface Tracer { /** * Starts a new {@link Span}. Start the span without setting it on context. * * This method do NOT modify the current Context. * * @param name The name of the span * @param [options] SpanOptions used for span creation * @param [context] Context to use to extract parent * @returns Span The newly created span * @example * const span = tracer.startSpan('op'); * span.setAttribute('key', 'value'); * span.end(); */ startSpan(name: string, options?: SpanOptions, context?: Context): Span; /** * Starts a new {@link Span} and calls the given function passing it the * created span as first argument. * Additionally the new span gets set in context and this context is activated * for the duration of the function call. * * **Important**: The callback function is responsible for calling `span.end()` * to finish the span. Unlike some other OpenTelemetry implementations, the span * is NOT automatically ended when the callback returns. If `span.end()` is not * called, the span will never be exported and will be silently lost. * * @param name The name of the span * @param [options] SpanOptions used for span creation * @param [context] Context to use to extract parent * @param fn function called in the context of the span and receives the newly created span as an argument * @returns return value of fn * @example * const something = tracer.startActiveSpan('op', span => { * try { * do some work * span.setStatus({code: SpanStatusCode.OK}); * return something; * } catch (err) { * span.setStatus({ * code: SpanStatusCode.ERROR, * message: err.message, * }); * throw err; * } finally { * span.end(); * } * }); * * @example * const span = tracer.startActiveSpan('op', span => { * try { * do some work * return span; * } catch (err) { * span.setStatus({ * code: SpanStatusCode.ERROR, * message: err.message, * }); * throw err; * } * }); * do some more work * span.end(); */ startActiveSpan<F extends (span: Span) => unknown>(name: string, fn: F): ReturnType<F>; startActiveSpan<F extends (span: Span) => unknown>(name: string, options: SpanOptions, fn: F): ReturnType<F>; startActiveSpan<F extends (span: Span) => unknown>(name: string, options: SpanOptions, context: Context, fn: F): ReturnType<F>; } //#endregion export { Tracer }; //# sourceMappingURL=tracer.d.mts.map