Skip to content

Commit 1677b89

Browse files
Update NKLogFileManager.swift
1 parent 27f2dc1 commit 1677b89

1 file changed

Lines changed: 18 additions & 1 deletion

File tree

Sources/NextcloudKit/Log/NKLogFileManager.swift

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)