📝 consolidate logger API and async lifecycle guidance

This commit is contained in:
Nanaloveyuki
2026-06-14 14:00:00 +08:00
parent 4f2ad097af
commit 265cd69ea9
154 changed files with 2419 additions and 396 deletions
+12 -5
View File
@@ -2,8 +2,8 @@
name: library-async-logger-with-target
group: api
category: facade
update-time: 20260613
description: Replace the default target carried by a LibraryAsyncLogger facade.
update-time: 20260614
description: Replace the default target carried by a LibraryAsyncLogger facade while rewrapping the derived async logger state behind the same library-facing surface.
key-word:
- async
- library
@@ -37,10 +37,11 @@ pub fn[S] LibraryAsyncLogger::with_target(
Detailed rules explaining key parameters and behaviors
- This API delegates to the wrapped async logger's `with_target(...)` behavior and then re-wraps the result.
- The returned value keeps the same queue state, sink type, and async config.
- This API delegates to the wrapped async logger's `with_target(...)` behavior and then re-wraps the result as another `LibraryAsyncLogger[S]`.
- The original facade is not mutated. The returned facade stores the replacement target while the source facade keeps its previous target.
- Timestamp behavior, enabled-level gating, sink type, queue state, async config, and failure/lifecycle state stay the same because only the default target field changes.
- This replaces the default target instead of composing it.
- The original facade value is not mutated.
- Async state helpers remain hidden behind the narrower facade after rewrapping; use `to_async_logger()` if later code needs them.
### How to Use
@@ -70,6 +71,10 @@ let io = base.with_target("io")
In this example, one base facade becomes several target-specific async facades.
And each derived facade still wraps the same kind of queue-backed async logger state, differing only in the default target it carries.
The derived facade keeps the same timestamp and level-gating behavior as the source facade.
### Error Case
e.g.:
@@ -82,3 +87,5 @@ e.g.:
1. Use this API for replacement, not target-path composition.
2. It keeps the narrower `LibraryAsyncLogger` boundary intact.
3. Use `child(...)` when the new target should be combined with the current one instead of replacing it.