Logger<unknown, void>The default logging implementation used by the Effect runtime.
Example (Referencing the default logger)
import { Effect, Logger } from "effect"
// Use the default logger (automatically used by Effect runtime)
const program = Effect.gen(function*() {
yield* Effect.log("This uses the default logger")
yield* Effect.logInfo("Info message")
yield* Effect.logError("Error message")
})
// Explicitly use the default logger
const withDefaultLogger = Effect.log("Explicit default").pipe(
Effect.provide(Logger.layer([Logger.defaultLogger]))
)
// Compare with custom logger
const customLogger = Logger.make((options) => {
console.log(`CUSTOM: ${options.message}`)
})constructors
Source effect/Logger.ts:5091 lines
export const const defaultLogger: Logger<unknown, void>const defaultLogger: {
log: (options: Options<unknown>) => void;
pipe: { <A>(this: A): A; <A, B = never>(this: A, ab: (_: A) => B): B; <A, B = never, C = never>(this: A, ab: (_: A) => B, bc: (_: B) => C): C; <A, B = never, C = never, D = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D): D; <…;
}
The default logging implementation used by the Effect runtime.
Example (Referencing the default logger)
import { Effect, Logger } from "effect"
// Use the default logger (automatically used by Effect runtime)
const program = Effect.gen(function*() {
yield* Effect.log("This uses the default logger")
yield* Effect.logInfo("Info message")
yield* Effect.logError("Error message")
})
// Explicitly use the default logger
const withDefaultLogger = Effect.log("Explicit default").pipe(
Effect.provide(Logger.layer([Logger.defaultLogger]))
)
// Compare with custom logger
const customLogger = Logger.make((options) => {
console.log(`CUSTOM: ${options.message}`)
})
defaultLogger: interface Logger<in Message, out Output>A logger that transforms a runtime log event into an output value.
Details
The runtime calls log with the message, level, cause, fiber, and timestamp
for each log event. Use Logger.layer to install one or more loggers for an
effect.
Example (Creating custom loggers)
import { Effect, Logger } from "effect"
// Create a custom logger that accepts unknown messages and returns void
const stringLogger = Logger.make<unknown, void>((options) => {
console.log(`[${options.logLevel}] ${options.message}`)
})
// Create a logger that accepts any message type and returns a formatted string
const formattedLogger = Logger.make<unknown, string>((options) =>
`${options.date.toISOString()} [${options.logLevel}] ${options.message}`
)
// Use the logger in an Effect program
const program = Effect.log("Hello World").pipe(
Effect.provide(Logger.layer([stringLogger]))
)
Logger<unknown, void> = import effecteffect.const defaultLogger: Logger<unknown, void>const defaultLogger: {
log: (options: Options<unknown>) => void;
pipe: { <A>(this: A): A; <A, B = never>(this: A, ab: (_: A) => B): B; <A, B = never, C = never>(this: A, ab: (_: A) => B, bc: (_: B) => C): C; <A, B = never, C = never, D = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D): D; <…;
}
defaultLogger