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