From cd7f9c8c4c6f3d58a7ae8b2b882d8184f2d48e56 Mon Sep 17 00:00:00 2001 From: Dariusz Rybicki <dariusz@elixxir.io> Date: Wed, 5 Oct 2022 01:48:25 +0200 Subject: [PATCH] Improve LogeMessage parsing --- Sources/XXMessengerClient/Utils/LogMessage.swift | 4 ++-- .../Utils/LogMessageTests.swift | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/Sources/XXMessengerClient/Utils/LogMessage.swift b/Sources/XXMessengerClient/Utils/LogMessage.swift index 387c536a..7188f9b0 100644 --- a/Sources/XXMessengerClient/Utils/LogMessage.swift +++ b/Sources/XXMessengerClient/Utils/LogMessage.swift @@ -15,7 +15,7 @@ extension LogMessage { public static func parse(_ string: String) -> LogMessage { let level: Logger.Level let text: String - let pattern = #"([A-Z]+) (.*)"# + let pattern = #"^([A-Z]+)( \d{4}/\d{2}/\d{2})?( \d{1,2}:\d{2}:\d{2}\.\d+)? (.*)$"# let regex = try! NSRegularExpression(pattern: pattern) let stringRange = NSRange(location: 0, length: string.utf16.count) if let match = regex.firstMatch(in: string, range: stringRange) { @@ -28,7 +28,7 @@ extension LogMessage { } } level = .fromString(groups[1]) - text = groups[2] ?? string + text = groups[4] ?? string } else { level = .notice text = string diff --git a/Tests/XXMessengerClientTests/Utils/LogMessageTests.swift b/Tests/XXMessengerClientTests/Utils/LogMessageTests.swift index c955e303..ba6dbe28 100644 --- a/Tests/XXMessengerClientTests/Utils/LogMessageTests.swift +++ b/Tests/XXMessengerClientTests/Utils/LogMessageTests.swift @@ -40,4 +40,19 @@ final class LogMessageTests: XCTestCase { LogMessage(level: .notice, text: "1234 Wrongly formatted") ) } + + func testParsingStripsDateTime() { + XCTAssertNoDifference( + LogMessage.parse("INFO 2022/10/04 Informing..."), + LogMessage(level: .info, text: "Informing...") + ) + XCTAssertNoDifference( + LogMessage.parse("INFO 23:36:55.755390 Informing..."), + LogMessage(level: .info, text: "Informing...") + ) + XCTAssertNoDifference( + LogMessage.parse("INFO 2022/10/04 23:36:55.755390 Informing..."), + LogMessage(level: .info, text: "Informing...") + ) + } } -- GitLab