There is no ambient/current logger: a logger is always passed explicitly, and
withFields returns an immutable child rather than mutating shared state.
Per-call fields override fields inherited from the logger. Logging is
best-effort: a throwing sink is isolated from the work being logged.
Structured logger.
There is no ambient/current logger: a logger is always passed explicitly, and
withFieldsreturns an immutable child rather than mutating shared state. Per-call fields override fields inherited from the logger. Logging is best-effort: a throwing sink is isolated from the work being logged.Example