2.7 KiB
name, group, category, update-time, description, key-word
| name | group | category | update-time | description | key-word | ||||
|---|---|---|---|---|---|---|---|---|---|
| library-logger-to-logger | api | facade | 20260613 | Recover the underlying full sync logger from the library-facing sync facade without rebuilding sink or logger composition state. |
|
Library-logger-to-logger
Recover Logger[S] from LibraryLogger[S]. This unwraps the library-facing sync facade when code needs methods that are only available on the full logger type.
Interface
pub fn[S] LibraryLogger::to_logger(self : LibraryLogger[S]) -> Logger[S] {}
input
self : LibraryLogger[S]- Library-facing sync logger facade.
output
Logger[S]- The underlying full sync logger.
Explanation
Detailed rules explaining key parameters and behaviors
- This conversion unwraps the existing logger instead of rebuilding it.
- Sink wiring, target, min level, timestamp behavior, and attached wrappers remain the same.
- Use this when code needs full-surface APIs such as
with_timestamp(...),with_filter(...), orwith_patch(...). - When the wrapped sink is
RuntimeSink, unwrapping preserves that runtime sink value, but the result type is stillLogger[RuntimeSink]rather than theConfiguredLoggeralias. Runtime-specific operations remain available throughfull.sinkor by keeping aConfiguredLoggervalue directly.
How to Use
Here are some specific examples provided.
When Need Full Logger-only Composition APIs
When a library-facing logger must be widened temporarily for additional composition:
let library_logger = LibraryLogger::new(console_sink(), target="lib")
let full_logger = library_logger.to_logger().with_timestamp()
In this example, the facade is unwrapped so the caller can access full logger composition APIs again.
When Need Runtime Helpers After Library-oriented Config Build
When a library-facing runtime logger should later expose configured runtime controls internally:
let full = logger.to_logger()
ignore(full.sink.pending_count())
In this example, unwrapping preserves the same RuntimeSink pipeline, and callers reach runtime-specific helpers through that preserved sink value.
Error Case
e.g.:
-
If callers only need library-oriented write APIs, unwrapping is unnecessary.
-
Unwrapping does not change the current target or sink behavior by itself.
-
Recovering the full logger does not rebuild or reset the existing sink wrappers.
Notes
-
Use this only when the narrower facade is no longer sufficient.
-
This is the inverse projection of
Logger::to_library_logger(). -
Use
LibraryLogger[S]directly when the narrower package-facing surface is still sufficient.