Skip to content

Ownership boundaries

liblaf.logging owns only the hooks it installs during init(). It restores a hook only when that exact hook is still active, so another library can replace a hook after initialization without being overwritten by restore().

Handlers follow the same boundary. Package-created handlers receive the shared formatters and rate-limit filter. Explicit handlers= are application-owned: they are passed to logging.basicConfig() unchanged and receive no implicit filters. Progress state is likewise owned by optional liblaf.progress; this package only renders the structured records it emits.