Hyperlinkv0.8.0-beta.28

Logger

Logger.withLeveledConsoleconsteffect/Logger.ts:350
<Message, Output>(self: Logger<Message, Output>): Logger<Message, void>

Returns a new Logger that writes all output of the specified Logger to the console.

Details

Will use the appropriate console method (i.e. console.log, console.error, etc.) based upon the current LogLevel.

Debug uses console.debug, Info uses console.info, Trace uses console.trace, Warn uses console.warn, Error and Fatal use console.error, and all other levels use console.log.

Example (Writing logs with level-based console methods)

import { Effect, Logger } from "effect"

const formatter = Logger.make((options) =>
  `[${options.logLevel}] ${options.message}`
)

const leveledLogger = Logger.withLeveledConsole(formatter)

const program = Effect.gen(function*() {
  yield* Effect.logInfo("Info message") // -> console.info
  yield* Effect.logWarning("Warning") // -> console.warn
  yield* Effect.logError("Error occurred") // -> console.error
  yield* Effect.logDebug("Debug info") // -> console.debug
}).pipe(
  Effect.provide(Logger.layer([leveledLogger]))
)
logging
Source effect/Logger.ts:35022 lines
export const withLeveledConsole = <Message, Output>(
  self: Logger<Message, Output>
): Logger<Message, void> =>
  effect.loggerMake((options) => {
    const console = options.fiber.getRef(effect.ConsoleRef)
    const output = self.log(options)
    switch (options.logLevel) {
      case "Debug":
        return console.debug(output)
      case "Info":
        return console.info(output)
      case "Trace":
        return console.trace(output)
      case "Warn":
        return console.warn(output)
      case "Error":
      case "Fatal":
        return console.error(output)
      default:
        return console.log(output)
    }
  })