import * as Otlp from '@effect/opentelemetry/Otlp';
import * as FetchHttpClient from '@effect/platform/FetchHttpClient';
import * as Effect from 'effect/Effect';
import * as Layer from 'effect/Layer';
import * as Logger from 'effect/Logger';
import { EnvVars } from './EnvVars';
export const ObservabilityLive = Layer.unwrapEffect(
EnvVars.OTLP_URL.pipe(
Effect.map((url) =>
Otlp.layer({
baseUrl: url.toString(),
resource: {
serviceName: 'backend-server',
serviceVersion: '1.0.0',
},
tracerExportInterval: '10 seconds',
loggerExportInterval: '10 seconds',
maxBatchSize: 1,
replaceLogger: Logger.logfmtLogger,
loggerExcludeLogSpans: true,
}),
),
Effect.tap(() => Effect.logInfo('✅ Observability layer created')),
),
).pipe(Layer.provide(FetchHttpClient.layer));
import * as Otlp from '@effect/opentelemetry/Otlp';
import * as FetchHttpClient from '@effect/platform/FetchHttpClient';
import * as Effect from 'effect/Effect';
import * as Layer from 'effect/Layer';
import * as Logger from 'effect/Logger';
import { EnvVars } from './EnvVars';
export const ObservabilityLive = Layer.unwrapEffect(
EnvVars.OTLP_URL.pipe(
Effect.map((url) =>
Otlp.layer({
baseUrl: url.toString(),
resource: {
serviceName: 'backend-server',
serviceVersion: '1.0.0',
},
tracerExportInterval: '10 seconds',
loggerExportInterval: '10 seconds',
maxBatchSize: 1,
replaceLogger: Logger.logfmtLogger,
loggerExcludeLogSpans: true,
}),
),
Effect.tap(() => Effect.logInfo('✅ Observability layer created')),
),
).pipe(Layer.provide(FetchHttpClient.layer));