log_io library

Log writers that depend on dart:io / dart:isolate and therefore do not work on the web. Import this in addition to package:serverpod_shared/serverpod_shared.dart when you need terminal-facing output or isolate-based writers.

Classes

ActiveScope
State for a single in-progress scope with a braille spinner.
ClosedScope
A completed scope record for test assertions.
IsolatedLogWriter
A LogWriter that runs a wrapped writer on a dedicated isolate.
Log
A logger that delegates to a LogWriter and resolves the current LogScope from the Zone.
LogEntry
A single log entry. Always belongs to a LogScope.
LogScope
A scoped operation. Scopes form a tree - every scope has a parent except the root scope.
LogWriter
Transport layer for log output. Implementations decide where logs go (terminal, database, VM service, TUI, etc.).
MultiLogWriter
A LogWriter that fans out to multiple child writers.
SpinnerLogWriter
A LogWriter base class that manages braille progress spinners.
TestLogWriter
A LogWriter that collects entries and scopes for test assertions.
TextLogWriter
A SpinnerLogWriter that writes formatted text to stdout/stderr.

Enums

LogLevel
Log severity level.

Extensions

LogConvenience on Log
Convenience methods for common log levels.
LogScoping on Log
Scope management: progress operations and manual scope control.

Properties

isInteractiveTerminal ↔ bool
Whether stdout is an interactive terminal.
getter/setter pair
log → Log
Global Log that forwards to logWriter. Identity is stable: the instance is constructed at library init and never reassigned. Entry points configure logging by mutating logWriter, not by replacing log.
final
logWriter → MultiLogWriter
Global writer chain that backs log. Callers configure the chain by adding writers with MultiLogWriter.add and removing them with MultiLogWriter.remove; identity is stable for the process lifetime, so the chain is shared across any number of Log consumers and framework bootstraps.
final

Functions

formatElapsed(Duration d) → String
Format a duration for display in spinner/completion lines.

Typedefs

LogEntryFactory = FutureOr<LogEntry> Function()
A factory function that creates a LogEntry.