Skip to content

Commit

Permalink
Merge pull request #24 from jakmaj/fix/deletion-from-outside
Browse files Browse the repository at this point in the history
Handle case when log files were deleted from outside
  • Loading branch information
David2XN authored Jan 12, 2024
2 parents 8a07f85 + 1874ec5 commit 257f191
Show file tree
Hide file tree
Showing 2 changed files with 60 additions and 0 deletions.
5 changes: 5 additions & 0 deletions Sources/Logger/Loggers/FileLogger/FileLogger.swift
Original file line number Diff line number Diff line change
Expand Up @@ -286,6 +286,11 @@ public class FileLogger: Logging {
return try FileHandle(forWritingTo: url)
}

if currentWritableFileHandle != nil && !fileManager.fileExists(atPath: currentLogFileUrl.path) {
currentWritableFileHandle = nil
currentLogFileNumber = 0
}

let dateString = DateFormatter.dateFormatter.string(from:)

let currentDate = Date()
Expand Down
55 changes: 55 additions & 0 deletions Tests/LoggerTests/Loggers/FileLoggerTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -604,6 +604,61 @@ class FileLoggerTests: XCTestCase {
XCTAssertEqual(logCount, 100)
XCTAssertEqual(deleteCount, 50)
}

func test_deleting_log_files_from_outside() throws {
let fileLogger = try FileLogger(
appName: nil,
fileManager: fileManager,
userDefaults: userDefaults,
logDirURL: logDirURL,
namespace: nil,
numberOfLogFiles: 3,
dateFormatter: DateFormatter.dateFormatter,
fileHeaderContent: "",
lineSeparator: "<-->",
logEntryEncoder: LogEntryEncoder(),
logEntryDecoder: LogEntryDecoder(),
externalLogger: { _ in },
fileAccessQueue: .syncMock
)

let date = Date(timeIntervalSince1970: 0)

fileLogger.log(
.init(
header: .init(date: date, level: .info, dateFormatter: DateFormatter.dateTimeFormatter),
location: .init(fileName: "file", function: "function", line: 1),
message: "Error message"
)
)

fileLogger.log(
.init(
header: .init(date: date, level: .info, dateFormatter: DateFormatter.dateTimeFormatter),
location: .init(fileName: "file2", function: "function2", line: 20),
message: "Warning message\nThis is test!"
)
)

let fileLogs = try! fileLogger.gettingRecordsFromLogFile(at: fileLogger.currentLogFileUrl)

XCTAssertEqual(fileLogs.count, 2)

try fileManager.deleteAllFiles(at: logDirURL, withPathExtension: "log")

fileLogger.log(
.init(
header: .init(date: date, level: .info, dateFormatter: DateFormatter.dateTimeFormatter),
location: .init(fileName: "file3", function: "function3", line: 30),
message: "Previous logs were deleted."
)
)

let fileLogsAfterDelete = try! fileLogger.gettingRecordsFromLogFile(at: fileLogger.currentLogFileUrl)

XCTAssertEqual(fileLogsAfterDelete.count, 1)
XCTAssertEqual(fileLogsAfterDelete[0].message.description, "Previous logs were deleted.")
}
}

// MARK: - FileManager + helper functions
Expand Down

0 comments on commit 257f191

Please sign in to comment.