Files
BitLogger/docs/zh/api/async.md
T
2026-07-17 18:06:30 +08:00

1.8 KiB

异步生命周期 API

异步 API 从 combined config 构建 Logger,再以单 worker 生命周期处理待写入记录。可执行 async fn main 仍应按目标平台边界使用。

解析与构建

pub fn parse_async_logger_build_config_text(
  input : String,
) -> AsyncLoggerBuildConfig raise

pub fn build_async_logger(
  config : AsyncLoggerBuildConfig,
) -> AsyncLogger[RuntimeSink]

解析函数同时验证 loggerasync_config 两部分;缺少任一部分时使用对应默认配置。构建函数先复用同步 build_logger(config.logger) 路径,再包裹异步层,因此保留同步 sink、文件与可选同步队列的运行时语义。

let config = @async_log.parse_async_logger_build_config_text(raw) catch {
  err => { ignore(err); return }
}
let logger = @async_log.build_async_logger(config)

run()

pub async fn AsyncLogger::run(self : AsyncLogger[S]) -> Unit

启动 drain worker。单个 Logger 只能同时拥有一个 worker;已经运行时再次调用会失败,关闭后的 Logger 也不能重新启动。worker 正常在队列关闭时退出;worker 失败时会记录状态并将错误向上传递。

shutdown()

pub async fn AsyncLogger::shutdown(
  self : AsyncLogger[S],
  clear? : Bool = false,
) -> Unit

clear=false 先等待 idle 再关闭;clear=true 立即关闭并放弃待处理记录。两条路径都会等待活动 worker 退出。没有运行 worker 且仍有待处理记录时,clear=false 可能无法推进,因此应用应保证先启动 run()

英文原始 API