Hyperlinkv0.8.0-beta.28

Logger

Logger.mapconsteffect/Logger.ts:227
<Output, Output2>(f: (output: Output) => Output2): <Message>(
  self: Logger<Message, Output>
) => Logger<Message, Output2>
<Message, Output, Output2>(
  self: Logger<Message, Output>,
  f: (output: Output) => Output2
): Logger<Message, Output2>

Transforms the output of a Logger using the provided function.

When to use

Use when an existing logger's output should be transformed without recreating the logging logic.

Example (Transforming logger output)

import { Logger } from "effect"

// Create a logger that outputs objects
const structuredLogger = Logger.make((options) => ({
  level: options.logLevel,
  message: options.message,
  timestamp: options.date.toISOString()
}))

// Transform the output to JSON strings
const jsonStringLogger = Logger.map(
  structuredLogger,
  (output) => JSON.stringify(output)
)

// Transform to uppercase messages
const uppercaseLogger = Logger.map(
  structuredLogger,
  (output) => ({ ...output, message: String(output.message).toUpperCase() })
)
mapping
Source effect/Logger.ts:22711 lines
export const map = dual<
  <Output, Output2>(
    f: (output: Output) => Output2
  ) => <Message>(
    self: Logger<Message, Output>
  ) => Logger<Message, Output2>,
  <Message, Output, Output2>(
    self: Logger<Message, Output>,
    f: (output: Output) => Output2
  ) => Logger<Message, Output2>
>(2, (self, f) => effect.loggerMake((options) => f(self.log(options))))
Referenced by 1 symbols