@@ -74,14 +74,10 @@ public struct DisabledLogger: Logger {
7474open class OSLogger : Logger , @unchecked Sendable {
7575 private static let subsystem = " io.livekit.sdk "
7676
77- private static let queue = DispatchQueue ( label: " io.livekit.oslogger " , qos: . utility)
78-
79- private nonisolated ( unsafe) static var ffiBootstrapped = false
80-
77+ private let queue = DispatchQueue ( label: " io.livekit.oslogger " , qos: . utility)
8178 private var logs : [ String : OSLog ] = [ : ]
8279
8380 private lazy var rtcLogger = LKRTCCallbackLogger ( )
84- private var ffiLogForwardTask : Task < Void , Never > ?
8581
8682 private let minLevel : LogLevel
8783
@@ -99,7 +95,6 @@ open class OSLogger: Logger, @unchecked Sendable {
9995
10096 deinit {
10197 rtcLogger. stop ( )
102- ffiLogForwardTask? . cancel ( )
10398 }
10499
105100 public func log(
@@ -123,7 +118,7 @@ open class OSLogger: Logger, @unchecked Sendable {
123118
124119 let metadata = buildScopedMetadataString ( )
125120
126- Self . queue. async {
121+ queue. async {
127122 func getOSLog( for type: Any . Type ) -> OSLog {
128123 let typeName = String ( describing: type)
129124
@@ -150,18 +145,15 @@ open class OSLogger: Logger, @unchecked Sendable {
150145 }
151146
152147 private func startFFILogForwarding( minLevel: LogLevel ) {
153- Self . queue. sync {
154- if !Self. ffiBootstrapped {
155- logForwardBootstrap ( level: minLevel. logForwardFilter)
156- Self . ffiBootstrapped = true
157- }
158- }
148+ Task ( priority: . utility) { [ weak self] in
149+ guard self != nil else { return } // don't initialize global level when releasing
150+ logForwardBootstrap ( level: minLevel. logForwardFilter)
159151
160- let ffiLog = OSLog ( subsystem: Self . subsystem, category: " FFI " )
152+ let ffiLog = OSLog ( subsystem: Self . subsystem, category: " FFI " )
153+ let ffiStream = AsyncStream ( unfolding: logForwardReceive)
161154
162- ffiLogForwardTask = Task ( priority: . utility) {
163- for await entry in AsyncStream ( unfolding: logForwardReceive) {
164- guard !Task. isCancelled else { break }
155+ for await entry in ffiStream {
156+ guard self != nil else { return }
165157
166158 let message = " \( entry. target) \( entry. message) "
167159
0 commit comments