Hyperlinkv0.8.0-beta.28

Effect

Effect.withLoggerconsteffect/Effect.ts:13992
<Output>(logger: Logger<unknown, Output>): <A, E, R>(
  effect: Effect<A, E, R>
) => Effect<A, E, R>
<A, E, R, Output>(
  effect: Effect<A, E, R>,
  logger: Logger<unknown, Output>
): Effect<A, E, R>

Adds a logger to the set of loggers which will output logs for this effect.

Example (Adding a logger to an effect)

import { Effect, Logger } from "effect"

// Create a custom logger that logs to the console
const customLogger = Logger.make(({ message }) =>
  Effect.sync(() => console.log(`[CUSTOM]: ${message}`))
)

const program = Effect.gen(function*() {
  yield* Effect.log("This will go to both default and custom logger")
  return "completed"
})

// Add the custom logger to the effect
const programWithLogger = Effect.withLogger(program, customLogger)

Effect.runPromise(programWithLogger)
// Output includes both default and custom log outputs
logging
Source effect/Effect.ts:1399214 lines
export const withLogger = dual<
  <Output>(
    logger: Logger<unknown, Output>
  ) => <A, E, R>(effect: Effect<A, E, R>) => Effect<A, E, R>,
  <A, E, R, Output>(
    effect: Effect<A, E, R>,
    logger: Logger<unknown, Output>
  ) => Effect<A, E, R>
>(2, (effect, logger) =>
  internal.updateService(
    effect,
    internal.CurrentLoggers,
    (loggers) => new Set([...loggers, logger])
  ))