mirror of
https://github.com/Nanaloveyuki/BitLogger.git
synced 2026-07-24 00:42:18 +00:00
1.8 KiB
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]
解析函数同时验证 logger 与 async_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()。