Commit 9b149a6a by Demid Merzlyakov

Logger: split longer messages into multiple.

parent 0edd3bff
......@@ -25,9 +25,25 @@ final class Logger {
self.componentName = componentName
}
private let maxCharsPerMessage = 900 // The Apple limit for NSLog is 1024. Leaving some space for timestamp, etc. Not sure if they are a part of 1024, but I think they are. Also, account for our own prefix (roughly)
func log(level: LogLevel, message: String) {
#if DEBUG
NSLog("\(Logger.prefix) \(componentName) [\(logLevelString(level: level))]: \(message)")
let prefix = "\(Logger.prefix) \(componentName) [\(logLevelString(level: level))]"
if message.count < maxCharsPerMessage {
NSLog("\(prefix): \(message)")
}
else {
var partNumber = 1
let totalPartsCount = 1 + message.count / maxCharsPerMessage
var remainingMessage = message
while !remainingMessage.isEmpty {
let messageToPrint = remainingMessage.prefix(maxCharsPerMessage)
remainingMessage = String(remainingMessage.suffix(from: messageToPrint.endIndex))
NSLog("\(prefix) (part \(partNumber)/\(totalPartsCount)): \(messageToPrint)")
partNumber += 1
}
}
#endif
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment