observability.ts 882 B

123456789101112131415161718192021
  1. export * as Observability from "./observability"
  2. import { NodeFileSystem } from "@effect/platform-node"
  3. import { Effect, Layer, Logger, References } from "effect"
  4. import { FetchHttpClient } from "effect/unstable/http"
  5. import { OtlpSerialization } from "effect/unstable/observability"
  6. import { Logging } from "./observability/logging"
  7. import { Otlp } from "./observability/otlp"
  8. export const layer = Layer.unwrap(
  9. Effect.gen(function* () {
  10. const logs = Logger.layer([...Logging.loggers(), ...Otlp.loggers()], { mergeWithExisting: false }).pipe(
  11. Layer.provide(NodeFileSystem.layer),
  12. Layer.provide(OtlpSerialization.layerJson),
  13. Layer.provide(FetchHttpClient.layer),
  14. Layer.orDie,
  15. Layer.merge(Layer.succeed(References.MinimumLogLevel, Logging.minimumLogLevel())),
  16. )
  17. return Layer.merge(logs, yield* Effect.promise(Otlp.tracingLayer))
  18. }),
  19. )