mirror of
https://github.com/outbackdingo/firezone.git
synced 2026-01-27 18:18:55 +00:00
fix(apple): Append to Swift logfile instead of overwriting each time (#4633)
Fixes #4522 --------- Signed-off-by: Jamil <jamilbk@users.noreply.github.com>
This commit is contained in:
@@ -74,7 +74,7 @@ private final class LogWriter {
|
||||
private let workQueue: DispatchQueue
|
||||
private let category: Log.Category
|
||||
private let logger: Logger
|
||||
private let logFileURL: URL
|
||||
private let handle: FileHandle
|
||||
private let dateFormatter: ISO8601DateFormatter
|
||||
private let jsonEncoder: JSONEncoder
|
||||
|
||||
@@ -97,20 +97,32 @@ private final class LogWriter {
|
||||
logger.error("Log directory isn't acceptable!")
|
||||
return nil
|
||||
}
|
||||
self.logFileURL = folderURL
|
||||
|
||||
let logFileURL = folderURL
|
||||
.appendingPathComponent(dateFormatter.string(from: Date()))
|
||||
.appendingPathExtension("log")
|
||||
|
||||
// Create log file
|
||||
guard fileManager.createFile(atPath: self.logFileURL.path, contents: "".data(using: .utf8))
|
||||
guard fileManager.createFile(atPath: logFileURL.path, contents: "".data(using: .utf8)),
|
||||
let handle = try? FileHandle(forWritingTo: logFileURL),
|
||||
let _ = try? handle.seekToEnd()
|
||||
else {
|
||||
logger.error("Could not create log file: \(self.logFileURL.path)")
|
||||
logger.error("Could not create log file: \(logFileURL.path)")
|
||||
return nil
|
||||
}
|
||||
|
||||
self.handle = handle
|
||||
self.workQueue = DispatchQueue(label: "LogWriter.workQueue", qos: .utility)
|
||||
}
|
||||
|
||||
deinit {
|
||||
do {
|
||||
try self.handle.close()
|
||||
} catch {
|
||||
logger.error("Could not close logfile: \(error)")
|
||||
}
|
||||
}
|
||||
|
||||
func write(severity: Severity, message: String) {
|
||||
let logEntry = LogEntry(
|
||||
time: dateFormatter.string(from: Date()),
|
||||
@@ -127,12 +139,6 @@ private final class LogWriter {
|
||||
|
||||
jsonData.append(newLineData)
|
||||
|
||||
workQueue.async {
|
||||
do {
|
||||
try jsonData.write(to: self.logFileURL, options: .atomic)
|
||||
} catch {
|
||||
self.logger.error("Could not write LogEntry! \(error)")
|
||||
}
|
||||
}
|
||||
workQueue.async { self.handle.write(jsonData) }
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user