@@ -74,10 +74,7 @@ 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 ( )
@@ -123,7 +120,7 @@ open class OSLogger: Logger, @unchecked Sendable {
123120
124121 let metadata = buildScopedMetadataString ( )
125122
126- Self . queue. async {
123+ queue. async {
127124 func getOSLog( for type: Any . Type ) -> OSLog {
128125 let typeName = String ( describing: type)
129126
@@ -150,17 +147,12 @@ open class OSLogger: Logger, @unchecked Sendable {
150147 }
151148
152149 private func startFFILogForwarding( minLevel: LogLevel ) {
153- Self . queue. sync {
154- if !Self. ffiBootstrapped {
155- logForwardBootstrap ( level: minLevel. logForwardFilter)
156- Self . ffiBootstrapped = true
157- }
158- }
159-
160- let ffiLog = OSLog ( subsystem: Self . subsystem, category: " FFI " )
161-
162- ffiLogForwardTask = Task ( priority: . utility) {
163- for await entry in AsyncStream ( unfolding: logForwardReceive) {
150+ ffiLogForwardTask = Task ( priority: . utility) { [ weak self] in
151+ guard self != nil else { return } // don't initialize global level when creating new instance
152+ logForwardBootstrap ( level: minLevel. logForwardFilter)
153+ let ffiLog = OSLog ( subsystem: Self . subsystem, category: " FFI " )
154+ let ffiStream = AsyncStream ( unfolding: logForwardReceive)
155+ for await entry in ffiStream {
164156 guard !Task. isCancelled else { break }
165157
166158 let message = " \( entry. target) \( entry. message) "
0 commit comments