From 48da0e3d27d5f4d9f4da91656ca1f963c4be13d3 Mon Sep 17 00:00:00 2001 From: Efrain Bastidas Date: Sat, 5 Nov 2022 16:36:59 -0500 Subject: [PATCH] [Infrastructure] Logging improvements --- lib/infrastructure/logging_service.dart | 40 +++++++++++++++++++++++-- 1 file changed, 38 insertions(+), 2 deletions(-) diff --git a/lib/infrastructure/logging_service.dart b/lib/infrastructure/logging_service.dart index 91540b48d..08c745812 100644 --- a/lib/infrastructure/logging_service.dart +++ b/lib/infrastructure/logging_service.dart @@ -80,11 +80,25 @@ class LoggingServiceImpl implements LoggingService { final map = {'Tag': tag, 'Msg': msg}; if (ex != null) { - map.putIfAbsent('Ex', () => ex.toString()); + const title = 'Ex'; + final exMsg = ex.toString(); + final exMsgs = _splitMsgIfNeeded(exMsg); + for (int i = 0; i < exMsgs.length; i++) { + final msg = exMsgs[i]; + final key = exMsgs.length == 1 ? title : '$title-$i'; + map.putIfAbsent(key, () => msg); + } } if (trace != null) { - map.putIfAbsent('Trace', () => trace.toString()); + const title = 'Trace'; + final traceMsg = trace.toString(); + final traceMsgs = _splitMsgIfNeeded(traceMsg); + for (int i = 0; i < traceMsgs.length; i++) { + final msg = traceMsgs[i]; + final key = traceMsgs.length == 1 ? title : '$title-$i'; + map.putIfAbsent(key, () => msg); + } } map.addAll(_deviceInfoService.deviceInfo); @@ -92,6 +106,28 @@ class LoggingServiceImpl implements LoggingService { return map; } + List _splitMsgIfNeeded(String msg) { + const int maxMsgSize = 100; + if (msg.length <= maxMsgSize) { + return [msg]; + } + + final msgs = []; + int currentIndex = 0; + int remaining = msg.length; + while (remaining > 0) { + int end = currentIndex + maxMsgSize; + if (end > msg.length) { + end = msg.length; + } + final sub = msg.substring(currentIndex, end); + msgs.add(sub); + currentIndex += maxMsgSize; + remaining -= maxMsgSize; + } + return msgs; + } + String _getDateString() { final now = DateTime.now().toUtc(); return _formatter.format(now);