import { NodeSdk } from "@effect/opentelemetry";
import { ConsoleSpanExporter, SimpleSpanProcessor } from "@opentelemetry/sdk-trace-base";
import { Effect } from "effect";
const backgroundJob = Effect.gen(function* () {
yield* Effect.sleep("1 seconds");
yield* Effect.log(`BackgroundJob`);
}).pipe(Effect.withSpan("BackgroundJobSpan"));
const program = Effect.gen(function* () {
yield* Effect.log("Parent");
yield* backgroundJob.pipe(Effect.forkDaemon);
}).pipe(Effect.withSpan("ParentSpan"));
const NodeSdkLive = NodeSdk.layer(() => ({
resource: { serviceName: "example" },
spanProcessor: new SimpleSpanProcessor(new ConsoleSpanExporter()),
}));
Effect.runPromise(program.pipe(Effect.provide(NodeSdkLive), Effect.catchAllCause(Effect.logError)));
import { NodeSdk } from "@effect/opentelemetry";
import { ConsoleSpanExporter, SimpleSpanProcessor } from "@opentelemetry/sdk-trace-base";
import { Effect } from "effect";
const backgroundJob = Effect.gen(function* () {
yield* Effect.sleep("1 seconds");
yield* Effect.log(`BackgroundJob`);
}).pipe(Effect.withSpan("BackgroundJobSpan"));
const program = Effect.gen(function* () {
yield* Effect.log("Parent");
yield* backgroundJob.pipe(Effect.forkDaemon);
}).pipe(Effect.withSpan("ParentSpan"));
const NodeSdkLive = NodeSdk.layer(() => ({
resource: { serviceName: "example" },
spanProcessor: new SimpleSpanProcessor(new ConsoleSpanExporter()),
}));
Effect.runPromise(program.pipe(Effect.provide(NodeSdkLive), Effect.catchAllCause(Effect.logError)));