@@ -98,6 +98,7 @@ public final class NKLogFileManager: @unchecked Sendable {
9898 private let logFileName = " log.txt "
9999 private let logDirectory : URL
100100 public var logLevel : NKLogLevel
101+ public var filter : [ String ] = [ ]
101102 private var currentLogDate : String
102103 private let logQueue = DispatchQueue ( label: " com.nextcloud.LogWriterQueue " , attributes: . concurrent)
103104 private let rotationQueue = DispatchQueue ( label: " com.nextcloud.LogRotationQueue " )
@@ -109,8 +110,11 @@ public final class NKLogFileManager: @unchecked Sendable {
109110
110111 // MARK: - Initialization
111112
112- private init ( logLevel: NKLogLevel = . normal) {
113+ private init ( logLevel: NKLogLevel = . normal, filter : [ String ] ? = nil ) {
113114 self . logLevel = logLevel
115+ if let filter {
116+ self . filter = filter
117+ }
114118
115119 let documents = FileManager . default. urls ( for: . documentDirectory, in: . userDomainMask) . first!
116120 let logsFolder = documents. appendingPathComponent ( " Logs " , isDirectory: true )
@@ -150,6 +154,13 @@ public final class NKLogFileManager: @unchecked Sendable {
150154 self . logLevel = logLevel
151155 }
152156
157+ /// Sets filter for the logger.
158+ /// - Parameters:
159+ /// - filter:
160+ private func setFilter( filter: [ String ] ) {
161+ self . filter = filter
162+ }
163+
153164 // MARK: - Public API
154165
155166 public func writeLog( debug message: String , minimumLogLevel: NKLogLevel = . compact, consoleOnly: Bool = false ) {
@@ -220,9 +231,15 @@ public final class NKLogFileManager: @unchecked Sendable {
220231 let message = message else {
221232 return
222233 }
234+ // Minimum level
223235 if minimumLogLevel > logLevel {
224236 return
225237 }
238+ // Filter
239+ let shouldSkip = self . filter. contains { message. contains ( $0) }
240+ if shouldSkip {
241+ return
242+ }
226243
227244 let fileTimestamp = Self . stableTimestampString ( )
228245 let consoleTimestamp = Self . localizedTimestampString ( )
0 commit comments