(...message: ReadonlyArray<any>): Effect<void>Logs one or more messages at the FATAL level.
Example (Logging fatal messages)
import { Effect } from "effect"
const program = Effect.gen(function*() {
try {
// Simulate a critical system failure
throw new Error("System memory exhausted")
} catch (error) {
const errorMessage = error instanceof Error ? error.message : String(error)
yield* Effect.logFatal("Critical system failure:", errorMessage)
yield* Effect.logFatal("System shutting down")
}
})
Effect.runPromise(program)
// Output:
// timestamp=2023-... level=FATAL message="Critical system failure: System memory exhausted"
// timestamp=2023-... level=FATAL message="System shutting down"export const const logFatal: (
...message: ReadonlyArray<any>
) => Effect<void>
Logs one or more messages at the FATAL level.
Example (Logging fatal messages)
import { Effect } from "effect"
const program = Effect.gen(function*() {
try {
// Simulate a critical system failure
throw new Error("System memory exhausted")
} catch (error) {
const errorMessage = error instanceof Error ? error.message : String(error)
yield* Effect.logFatal("Critical system failure:", errorMessage)
yield* Effect.logFatal("System shutting down")
}
})
Effect.runPromise(program)
// Output:
// timestamp=2023-... level=FATAL message="Critical system failure: System memory exhausted"
// timestamp=2023-... level=FATAL message="System shutting down"
logFatal: (...message: readonly any[]message: interface ReadonlyArray<T>ReadonlyArray<any>) => interface Effect<out A, out E = never, out R = never>The Effect interface defines a value that lazily describes a workflow or
job. The workflow requires some context R, and may fail with an error of
type E, or succeed with a value of type A.
When to use
Use when you need to represent a lazy, composable workflow that can require
services, fail with a typed error, or succeed with a typed value.
Details
Effect values model resourceful interaction with the outside world,
including synchronous, asynchronous, concurrent, and parallel interaction.
They use a fiber-based concurrency model, with built-in support for
scheduling, fine-grained interruption, structured concurrency, and high
scalability.
To run an Effect value, you need a Runtime, which is a type that is
capable of executing Effect values.
Effect<void> = import internalinternal.const logWithLevel: (
level?: LogLevel.Severity
) => (
...message: ReadonlyArray<any>
) => Effect.Effect<void>
logWithLevel("Fatal")