Skip to content
Snippets Groups Projects
Commit e7bc04ea authored by Dariusz Rybicki's avatar Dariusz Rybicki
Browse files

Improve LogeMessage parsing

parent cd7f9c8c
No related branches found
No related tags found
2 merge requests!116XXMessengerClient - logging,!102Release 1.0.0
...@@ -15,8 +15,11 @@ extension LogMessage { ...@@ -15,8 +15,11 @@ extension LogMessage {
public static func parse(_ string: String) -> LogMessage { public static func parse(_ string: String) -> LogMessage {
let level: Logger.Level let level: Logger.Level
let text: String let text: String
let pattern = #"^([A-Z]+)( \d{4}/\d{2}/\d{2})?( \d{1,2}:\d{2}:\d{2}\.\d+)? (.*)$"# 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 regex = try! NSRegularExpression(
pattern: pattern,
options: .dotMatchesLineSeparators
)
let stringRange = NSRange(location: 0, length: string.utf16.count) let stringRange = NSRange(location: 0, length: string.utf16.count)
if let match = regex.firstMatch(in: string, range: stringRange) { if let match = regex.firstMatch(in: string, range: stringRange) {
var groups: [Int: String] = [:] var groups: [Int: String] = [:]
......
...@@ -55,4 +55,17 @@ final class LogMessageTests: XCTestCase { ...@@ -55,4 +55,17 @@ final class LogMessageTests: XCTestCase {
LogMessage(level: .info, text: "Informing...") LogMessage(level: .info, text: "Informing...")
) )
} }
func testParsingMultilineMessage() {
XCTAssertNoDifference(
LogMessage.parse("""
ERROR 2022/10/04 23:51:15.021658 First line
Second line
"""),
LogMessage(level: .error, text: """
First line
Second line
""")
)
}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment