summaryrefslogtreecommitdiffhomepage
path: root/ios/MullvadLogging
diff options
context:
space:
mode:
authorAndrew Bulhak <andrew.bulhak@mullvad.net>2024-04-11 12:55:52 +0200
committerBug Magnet <marco.nikic@mullvad.net>2024-04-17 12:40:40 +0200
commit6cd934154cda7e4e33b6a62dbdec982a96a219c8 (patch)
tree38602dbd862aa10ae0aad5f852e23bdcb82963ef /ios/MullvadLogging
parent4654acb952e4b4024329f99bb0b4f780154bdd12 (diff)
downloadmullvadvpn-6cd934154cda7e4e33b6a62dbdec982a96a219c8.tar.xz
mullvadvpn-6cd934154cda7e4e33b6a62dbdec982a96a219c8.zip
Move log file header writing to LogFileOutputStream
Diffstat (limited to 'ios/MullvadLogging')
-rw-r--r--ios/MullvadLogging/LogFileOutputStream.swift25
-rw-r--r--ios/MullvadLogging/Logging.swift10
2 files changed, 23 insertions, 12 deletions
diff --git a/ios/MullvadLogging/LogFileOutputStream.swift b/ios/MullvadLogging/LogFileOutputStream.swift
index a3b7ca4caa..26b059638e 100644
--- a/ios/MullvadLogging/LogFileOutputStream.swift
+++ b/ios/MullvadLogging/LogFileOutputStream.swift
@@ -19,6 +19,7 @@ class LogFileOutputStream: TextOutputStream {
private let fileURL: URL
private let encoding: String.Encoding
private let maxBufferCapacity: Int
+ private let fileHeader: String
private var state: State = .closed {
didSet {
@@ -44,10 +45,11 @@ class LogFileOutputStream: TextOutputStream {
case waitingToReopen
}
- init(fileURL: URL, encoding: String.Encoding = .utf8, maxBufferCapacity: Int = 16 * 1024) {
+ init(fileURL: URL, header: String, encoding: String.Encoding = .utf8, maxBufferCapacity: Int = 16 * 1024) {
self.fileURL = fileURL
self.encoding = encoding
self.maxBufferCapacity = maxBufferCapacity
+ self.fileHeader = header
}
deinit {
@@ -66,7 +68,7 @@ class LogFileOutputStream: TextOutputStream {
switch state {
case .closed:
do {
- let fileHandle = try openFile()
+ let fileHandle = try openFileWithHeader(fileHeader)
state = .opened(fileHandle)
try write(fileHandle: fileHandle, data: data)
} catch {
@@ -137,15 +139,22 @@ class LogFileOutputStream: TextOutputStream {
timer = nil
}
+ private func openFileWithHeader(_ header: String) throws -> FileHandle {
+ let fileHandle = try openFile()
+
+ let messageData =
+ "\(header)\n"
+ .data(using: encoding, allowLossyConversion: true)!
+ try write(fileHandle: fileHandle, data: messageData)
+
+ return fileHandle
+ }
+
private func reopenFile() {
do {
- let fileHandle = try openFile()
-
// Write a message indicating that the file was reopened.
- let messageData =
- "<Log file re-opened after failure. Buffered \(buffer.count) bytes of messages>\n"
- .data(using: encoding, allowLossyConversion: true)!
- try write(fileHandle: fileHandle, data: messageData)
+ let fileHandle =
+ try openFileWithHeader("<Log file re-opened after failure. Buffered \(buffer.count) bytes of messages>")
// Write all buffered messages.
if !buffer.isEmpty {
diff --git a/ios/MullvadLogging/Logging.swift b/ios/MullvadLogging/Logging.swift
index c6d86a549b..b8ad66c191 100644
--- a/ios/MullvadLogging/Logging.swift
+++ b/ios/MullvadLogging/Logging.swift
@@ -21,8 +21,11 @@ public struct LoggerBuilder {
public var metadata: Logger.Metadata = [:]
public var logLevel: Logger.Level = .debug
+ public var header: String
- public init() {}
+ public init(header: String) {
+ self.header = header
+ }
public mutating func addFileOutput(fileURL: URL) {
let logsDirectoryURL = fileURL.deletingLastPathComponent()
@@ -42,19 +45,18 @@ public struct LoggerBuilder {
logRotationErrors.append(error)
}
- outputs.append(.fileOutput(LogFileOutputStream(fileURL: fileURL)))
+ outputs.append(.fileOutput(LogFileOutputStream(fileURL: fileURL, header: header)))
}
public mutating func addOSLogOutput(subsystem: String) {
outputs.append(.osLogOutput(subsystem))
}
- public func install(header: String) {
+ public func install() {
LoggingSystem.bootstrap { label -> LogHandler in
let logHandlers: [LogHandler] = outputs.map { output in
switch output {
case let .fileOutput(stream):
- stream.write("\(header)\n")
return CustomFormatLogHandler(label: label, streams: [stream])
case let .osLogOutput(subsystem):