Skip to content

Commit 225253f

Browse files
cod
Signed-off-by: Marino Faggiana <marino@marinofaggiana.com>
1 parent 9b3e373 commit 225253f

2 files changed

Lines changed: 23 additions & 12 deletions

File tree

Sources/NextcloudKit/Log/NKLogFileManager.swift

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ public final class NKLogFileManager {
7777
public var logLevel: NKLogLevel
7878
private var currentLogDate: String
7979
private let logQueue = DispatchQueue(label: "LogWriterQueue", attributes: .concurrent)
80+
private let rotationQueue = DispatchQueue(label: "LogRotationQueue")
8081
private let fileManager = FileManager.default
8182

8283
// MARK: - Initialization
@@ -142,20 +143,37 @@ public final class NKLogFileManager {
142143
writeLog("\(emojiColored)[\(tag.uppercased())] \(message)")
143144
}
144145

146+
/// Writes a log message to both the console and the log file.
147+
/// Emojis and keyword replacements (e.g. [SUCCESS] -> 🟢) are only applied to the console output.
148+
/// The log file is plain and suitable for parsing. Rotation is handled before writing.
149+
///
150+
/// - Parameter message: The log message to record.
145151
public func writeLog(_ message: String?) {
146152
guard logLevel != .disabled, let message = message else { return }
147153

154+
// Generate timestamps for file and console
148155
let fileTimestamp = Self.stableTimestampString()
149156
let consoleTimestamp = Self.localizedTimestampString()
150-
let line = "[\(consoleTimestamp)] \(message)"
157+
158+
// Prepare the clean file line (without emojis or replacements)
151159
let fileLine = "\(fileTimestamp) \(message)\n"
152160

153-
let emoji = emojiColored(message)
154-
let consoleLine = "\(emoji)\(line)"
161+
// Prepare the console line with emoji prefix and keyword substitution
162+
let emojiPrefix = emojiColored(message)
163+
let visualMessage = message
164+
.replacingOccurrences(of: "[SUCCESS]", with: "🟢")
165+
.replacingOccurrences(of: "[ERROR]", with: "🔴")
166+
167+
let consoleLine = "[NKLOG] [\(consoleTimestamp)] \(emojiPrefix)\(visualMessage)"
155168
print(consoleLine)
156169

157-
logQueue.async {
170+
// Ensure log rotation is completed before writing to the file
171+
rotationQueue.sync {
158172
self.checkForRotation()
173+
}
174+
175+
// Write to the log file asynchronously
176+
logQueue.async {
159177
self.appendToLog(fileLine)
160178
}
161179
}

Sources/NextcloudKit/NKMonitor.swift

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -58,15 +58,8 @@ final class NKMonitor: EventMonitor, Sendable {
5858
if let method = request.request?.httpMethod,
5959
let url = request.request?.url?.absoluteString,
6060
let code = response.response?.statusCode {
61-
/*
62-
let response: String
63-
if NKLogFileManager.shared.printColor {
64-
response = (200..<300).contains(code) ? "🟢" : "🔴"
65-
} else {
66-
response = (200..<300).contains(code) ? "SUCCESS" : "ERROR"
67-
}
61+
let response = (200..<300).contains(code) ? "SUCCESS" : "ERROR"
6862
nkLog(network: "\(code) \(method) \(url) \(response)")
69-
*/
7063
}
7164
case .verbose:
7265
nkLog(debug: "Network response result: \(date) " + responseDebugDescription)

0 commit comments

Comments
 (0)