MCPcopy Create free account
hub / github.com/Effect-TS/effect / layerTracerProvider

Function layerTracerProvider

packages/opentelemetry/src/NodeSdk.ts:42–70  ·  view source on GitHub ↗
(
  processor: SpanProcessor | NonEmptyReadonlyArray<SpanProcessor>,
  config?: Omit<TracerConfig, "resource"> & {
    readonly shutdownTimeout?: DurationInput | undefined
  }
)

Source from the content-addressed store, hash-verified

40 * @category layers
41 */
42export const layerTracerProvider = (
43 processor: SpanProcessor | NonEmptyReadonlyArray<SpanProcessor>,
44 config?: Omit<TracerConfig, "resource"> & {
45 readonly shutdownTimeout?: DurationInput | undefined
46 }
47): Layer.Layer<Tracer.OtelTracerProvider, never, Resource.Resource> =>
48 Layer.scoped(
49 Tracer.OtelTracerProvider,
50 Effect.flatMap(
51 Resource.Resource,
52 (resource) =>
53 Effect.acquireRelease(
54 Effect.sync(() => {
55 const provider = new NodeTracerProvider({
56 ...(config ?? undefined),
57 resource,
58 spanProcessors: Array.isArray(processor) ? (processor as any) : [processor]
59 })
60 return provider
61 }),
62 (provider) =>
63 Effect.promise(() => provider.forceFlush().then(() => provider.shutdown())).pipe(
64 Effect.ignoreLogged,
65 Effect.interruptible,
66 Effect.timeoutOption(config?.shutdownTimeout ?? 3000)
67 )
68 )
69 )
70 )
71
72/**
73 * @since 1.0.0

Callers 1

layerFunction · 0.70

Calls 3

syncMethod · 0.80
pipeMethod · 0.65
shutdownMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…