@@ -113,14 +113,10 @@ public struct PrintLogger: Logger {
113113open class OSLogger : Logger , @unchecked Sendable {
114114 private static let subsystem = " io.livekit.sdk "
115115
116- private static let queue = DispatchQueue ( label: " io.livekit.oslogger " , qos: . utility)
117-
118- private nonisolated ( unsafe) static var ffiBootstrapped = false
119-
116+ private let queue = DispatchQueue ( label: " io.livekit.oslogger " , qos: . utility)
120117 private var logs : [ String : OSLog ] = [ : ]
121118
122119 private lazy var rtcLogger = LKRTCCallbackLogger ( )
123- private var ffiLogForwardTask : Task < Void , Never > ?
124120
125121 private let minLevel : LogLevel
126122
@@ -138,7 +134,6 @@ open class OSLogger: Logger, @unchecked Sendable {
138134
139135 deinit {
140136 rtcLogger. stop ( )
141- ffiLogForwardTask? . cancel ( )
142137 }
143138
144139 public func log(
@@ -162,7 +157,7 @@ open class OSLogger: Logger, @unchecked Sendable {
162157
163158 let metadata = buildScopedMetadataString ( )
164159
165- Self . queue. async {
160+ queue. async {
166161 func getOSLog( for type: Any . Type ) -> OSLog {
167162 let typeName = String ( describing: type)
168163
@@ -189,18 +184,15 @@ open class OSLogger: Logger, @unchecked Sendable {
189184 }
190185
191186 private func startFFILogForwarding( minLevel: LogLevel ) {
192- Self . queue. sync {
193- if !Self. ffiBootstrapped {
194- logForwardBootstrap ( level: minLevel. logForwardFilter)
195- Self . ffiBootstrapped = true
196- }
197- }
187+ Task ( priority: . utility) { [ weak self] in
188+ guard self != nil else { return } // don't initialize global level when releasing
189+ logForwardBootstrap ( level: minLevel. logForwardFilter)
198190
199- let ffiLog = OSLog ( subsystem: Self . subsystem, category: " FFI " )
191+ let ffiLog = OSLog ( subsystem: Self . subsystem, category: " FFI " )
192+ let ffiStream = AsyncStream ( unfolding: logForwardReceive)
200193
201- ffiLogForwardTask = Task ( priority: . utility) {
202- for await entry in AsyncStream ( unfolding: logForwardReceive) {
203- guard !Task. isCancelled else { break }
194+ for await entry in ffiStream {
195+ guard self != nil else { return }
204196
205197 let message = " \( entry. target) \( entry. message) "
206198
0 commit comments