Files
BitLogger/docs/api/logger-to-library-logger.md
T
2026-06-13 20:05:22 +08:00

1.8 KiB

name, group, category, update-time, description, key-word
name group category update-time description key-word
logger-to-library-logger api facade 20260613 Convert a full sync logger into the narrower library-facing sync facade.
logger
library
facade
public

Logger-to-library-logger

Convert Logger[S] into LibraryLogger[S]. This keeps the same sink and logging behavior while projecting the value onto the smaller library-facing sync surface.

Interface

pub fn[S] Logger::to_library_logger(self : Logger[S]) -> LibraryLogger[S] {}

input

  • self : Logger[S] - Full sync logger to project into the library facade.

output

  • LibraryLogger[S] - Narrower library-facing wrapper over the same logger state.

Explanation

Detailed rules explaining key parameters and behaviors

  • This conversion does not rebuild the sink or change the logger configuration.
  • Target, min level, timestamp behavior, and sink wiring are preserved.
  • The returned facade keeps library-oriented write APIs such as info(...), warn(...), and error(...).

How to Use

Here are some specific examples provided.

When Need To Return A Narrower Library Type

When internal setup uses the full logger API but the exposed result should stay smaller:

let logger = Logger::new(console_sink(), target="lib")
let public_logger = logger.to_library_logger()

In this example, public_logger keeps the same logging behavior but exposes the library facade.

Error Case

e.g.:

  • If callers later need APIs outside the library facade, they must unwrap with to_logger().

  • The conversion does not remove existing target or field bindings from the original logger.

Notes

  1. Use this when library boundaries should avoid exposing the full sync logger surface.

  2. This is a projection API, not a copy or rebuild step.