diff --git a/docs/api/async-logger-type.md b/docs/api/async-logger-type.md index 40bb960..12b8978 100644 --- a/docs/api/async-logger-type.md +++ b/docs/api/async-logger-type.md @@ -2,8 +2,8 @@ name: async-logger-type group: api category: async -update-time: 20260613 -description: Public asynchronous logger root type used for queue-backed sink-preserving logging pipelines. +update-time: 20260614 +description: Public asynchronous logger root type used for queue-backed sink-preserving logging pipelines with explicit lifecycle, failure, and flush-callback state. key-word: - async - logger @@ -51,6 +51,8 @@ Detailed rules explaining key parameters and behaviors - This is a public root struct, not a type alias. - The current fields cover targeting, overflow policy, batching, linger timing, flush policy, the wrapped sink, context/filter/patch behavior, queue state, and worker lifecycle flags. +- `flush_sink : (S) -> Int raise` stores the raising flush callback used by batch and shutdown flush policies. +- `pending_count`, `dropped_count`, `is_closed`, `is_running`, `has_failed`, and `last_error` are mutable runtime refs that power the higher-level lifecycle and diagnostics helpers. - The sink type parameter is preserved across async composition, which is why helpers such as `with_target(...)`, `with_context_fields(...)`, `with_filter(...)`, and `with_patch(...)` keep returning `AsyncLogger[S]`. - `async_logger(...)` constructs this type as the main asynchronous entry point. @@ -85,8 +87,12 @@ e.g.: - Actual enqueue, worker, and flush behavior still depends on the wrapped sink `S`, async runtime support, and the configured queue policy. +- Post-close logging behavior is not a property of the struct shape alone; it also depends on the active runtime implementation. + ### Notes 1. Use `async_logger(...)`, `build_async_logger(...)`, or `build_async_text_logger(...)` when you need a value of this type. 2. Use `ApplicationAsyncLogger` or `LibraryAsyncLogger[S]` when a more intention-specific async wrapper or alias fits the calling boundary better. + +3. Prefer the method helpers such as `state()`, `has_failed()`, `last_error()`, `is_running()`, and `shutdown()` instead of reading these public fields conceptually as if they were a stable manual mutation surface. diff --git a/docs/api/async-logger.md b/docs/api/async-logger.md index b6d9dca..098ff80 100644 --- a/docs/api/async-logger.md +++ b/docs/api/async-logger.md @@ -44,11 +44,13 @@ pub fn[S] async_logger( Detailed rules explaining key parameters and behaviors - `async_logger(...)` only builds the logger. Actual background draining is started by `run()`. +- The constructed logger starts with `is_closed=false`, `is_running=false`, `has_failed=false`, `last_error=""`, and zeroed pending/dropped counters. - In non-native targets, the implementation uses compatibility behavior while keeping the same public surface. - `src-async` is designed for `native / llvm / js / wasm / wasm-gc`, but current release-facing local verification is stronger for `native / js / wasm / wasm-gc` than for `llvm`. - `llvm` should currently be read as experimental and locally unverified in this environment rather than as a stable checked target. - `flush` is used only when batch or shutdown policy wants explicit flushing. - If the supplied flush callback raises, worker failure state is recorded through `has_failed()` and `last_error()`. +- The exact behavior of late log attempts after closure is runtime-dependent, so callers should use lifecycle helpers like `is_closed()` and `shutdown()` instead of assuming identical post-close enqueue semantics everywhere. - Queue overflow behavior depends on `AsyncOverflowPolicy`. ### How to Use @@ -104,3 +106,5 @@ e.g.: 3. Example entrypoint limitations such as `async fn main` support are separate from the library-level portability of this API. 4. See [target-verification.md](./target-verification.md) for the current local verification matrix. + +5. Pair this constructor with `run()` and `shutdown()` when you need the full worker lifecycle rather than just a configured async logger value.