@@ -69,6 +69,20 @@ public final class NKLogFileManager: @unchecked Sendable {
6969 shared. setConfiguration ( logLevel: logLevel)
7070 }
7171
72+ /// Configures filter.
73+ /// - Parameters:
74+ /// - blacklist: Set thing must not be logged.
75+ public static func setBlacklist( blacklist: [ String ] ) {
76+ shared. setBlacklist ( blacklist: blacklist)
77+ }
78+
79+ /// Configures whitelist.
80+ /// - Parameters:
81+ /// - whitelist: Set thing must be logged.
82+ public static func setCandidate( whitelist: [ String ] ) {
83+ shared. setWhitelist ( whitelist: whitelist)
84+ }
85+
7286 /// Creates the "Logs" folder inside the user's Documents directory if it does not already exist.
7387 ///
7488 /// This static method delegates to the singleton instance (`shared`) and ensures
@@ -98,6 +112,8 @@ public final class NKLogFileManager: @unchecked Sendable {
98112 private let logFileName = " log.txt "
99113 private let logDirectory : URL
100114 public var logLevel : NKLogLevel
115+ private var blacklist : [ String ] = [ ]
116+ private var whitelist : [ String ] = [ ]
101117 private var currentLogDate : String
102118 private let logQueue = DispatchQueue ( label: " com.nextcloud.LogWriterQueue " , attributes: . concurrent)
103119 private let rotationQueue = DispatchQueue ( label: " com.nextcloud.LogRotationQueue " )
@@ -109,8 +125,14 @@ public final class NKLogFileManager: @unchecked Sendable {
109125
110126 // MARK: - Initialization
111127
112- private init ( logLevel: NKLogLevel = . normal) {
128+ private init ( logLevel: NKLogLevel = . normal, blacklist : [ String ] ? = nil , whitelist : [ String ] ? = nil ) {
113129 self . logLevel = logLevel
130+ if let blacklist {
131+ self . blacklist = blacklist
132+ }
133+ if let whitelist {
134+ self . whitelist = whitelist
135+ }
114136
115137 let documents = FileManager . default. urls ( for: . documentDirectory, in: . userDomainMask) . first!
116138 let logsFolder = documents. appendingPathComponent ( " Logs " , isDirectory: true )
@@ -150,6 +172,20 @@ public final class NKLogFileManager: @unchecked Sendable {
150172 self . logLevel = logLevel
151173 }
152174
175+ /// Sets blacklist for the logger.
176+ /// - Parameters:
177+ /// - blacklist:
178+ private func setBlacklist( blacklist: [ String ] ) {
179+ self . blacklist = blacklist
180+ }
181+
182+ /// Sets candidate for the logger.
183+ /// - Parameters:
184+ /// - whitelist:
185+ private func setWhitelist( whitelist: [ String ] ) {
186+ self . whitelist = whitelist
187+ }
188+
153189 // MARK: - Public API
154190
155191 public func writeLog( debug message: String , minimumLogLevel: NKLogLevel = . compact, consoleOnly: Bool = false ) {
@@ -220,9 +256,18 @@ public final class NKLogFileManager: @unchecked Sendable {
220256 let message = message else {
221257 return
222258 }
259+ // Minimum level
223260 if minimumLogLevel > logLevel {
224261 return
225262 }
263+ // Blacklist
264+ if blacklist. contains ( where: { message. contains ( $0) } ) {
265+ return
266+ }
267+ // Whitelist
268+ if !whitelist. isEmpty, !whitelist. contains ( where: { message. contains ( $0) } ) {
269+ return
270+ }
226271
227272 let fileTimestamp = Self . stableTimestampString ( )
228273 let consoleTimestamp = Self . localizedTimestampString ( )
0 commit comments