2.0 KiB
name, group, category, update-time, description, key-word
| name | group | category | update-time | description | key-word | ||||
|---|---|---|---|---|---|---|---|---|---|
| configured-logger-drain | api | runtime | 20260512 | Drain queued work from a configured runtime logger with optional item limits. |
|
Configured-logger-drain
Drain queued work from a ConfiguredLogger. This helper is useful when config-driven queue wrapping should be advanced in a controlled, bounded way.
Interface
pub fn ConfiguredLogger::drain(self : ConfiguredLogger, max_items~ : Int = -1) -> Int {}
input
self : ConfiguredLogger- Config-driven runtime logger whose queued work should be drained.max_items : Int- Optional upper bound on how many queued items to drain. Negative values mean no explicit bound.
output
Int- Number of drained items.
Explanation
Detailed rules explaining key parameters and behaviors
- Queue-wrapped sinks may drain up to
max_itemsrecords. - For plain file sinks, the runtime falls back to file flush behavior instead of queue draining.
- For sinks without queue semantics, the result is typically
0. - This helper delegates to
RuntimeSink::drain(...)through the configured logger wrapper.
How to Use
Here are some specific examples provided.
When Need Bounded Queue Progress
When queued output should be advanced in chunks:
let drained = logger.drain(max_items=16)
In this example, callers limit how much queued work is processed in one step.
When Need Full Manual Drain
When the configured queue should be emptied explicitly:
ignore(logger.drain())
In this example, the configured runtime logger drains without imposing an item cap.
Error Case
e.g.:
-
If the runtime sink is not queue-backed, draining may return
0or follow fallback flush behavior. -
If callers only need generic flush semantics,
flush()may be the simpler API.
Notes
-
Prefer this helper when queue progress should be bounded or observable.
-
Use
pending_count()to inspect remaining backlog after the drain call.