From beee74e49afa77cc1f558563eeabbdb1e6b84140 Mon Sep 17 00:00:00 2001 From: Hans Kokx Date: Thu, 23 Jan 2025 13:59:40 +0100 Subject: [PATCH] v1.2.5 - Improved automatic metadata detection in `ArcaneLogger` Signed-off-by: Hans Kokx --- CHANGELOG.md | 4 ++++ example/pubspec.yaml | 2 +- lib/src/services/logging/logging_service.dart | 23 +++++++++++-------- pubspec.yaml | 2 +- 4 files changed, 19 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0251856..67c9404 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.2.5 + +- Improved automatic metadata detection in `ArcaneLogger` + ## 1.2.4 - Update package dependencies diff --git a/example/pubspec.yaml b/example/pubspec.yaml index dc8ea71..7e778fa 100644 --- a/example/pubspec.yaml +++ b/example/pubspec.yaml @@ -14,7 +14,7 @@ dependencies: uuid: ^4.5.0 dev_dependencies: - flutter_lints: ^4.0.0 + flutter_lints: ^5.0.0 flutter_test: sdk: flutter diff --git a/lib/src/services/logging/logging_service.dart b/lib/src/services/logging/logging_service.dart index a79edd8..9538757 100644 --- a/lib/src/services/logging/logging_service.dart +++ b/lib/src/services/logging/logging_service.dart @@ -132,22 +132,25 @@ class ArcaneLogger { metadata.putIfAbsent("timestamp", () => now); try { - final List parts = StackTrace.current + final List parts = + StackTrace.current.toString().split("\n")[2].split(RegExp("#2"))[1].trimLeft().split("."); + + module ??= parts.first.replaceFirst("new ", ""); + method ??= parts[1].split(" ").first.replaceAll(" fileAndLineParts = StackTrace.current .toString() .split("\n")[2] .split(RegExp("#2"))[1] - .trimLeft() - .split("."); + .trim() + .split("(package:") + .last + .split(":"); - module ??= parts.first.replaceFirst("new ", ""); - method ??= parts[1].split(" ").first; - - final String line = parts.last.substring(5).replaceAll(")", ""); - final String file = parts[1].split(" ").last.replaceAll("(package:", ""); - final String fileAndLine = "$file:$line"; + final String fileAndLine = "${fileAndLineParts[0]}:${fileAndLineParts[1]}"; metadata.putIfAbsent("module", () => module!); - metadata.putIfAbsent("method", () => method!); + if (method.isNotNullOrEmpty) metadata.putIfAbsent("method", () => method!); metadata.putIfAbsent("filenameAndLineNumber", () => fileAndLine); } catch (_) {} diff --git a/pubspec.yaml b/pubspec.yaml index 7394c97..bf01760 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: arcane_framework description: "Agnostic Reusable Component Architecture for New Ecosystems: a modern framework for bootstrapping new applications" -version: 1.2.4 +version: 1.2.5 repository: https://github.com/hanskokx/arcane_framework issue_tracker: https://github.com/hanskokx/arcane_framework/issues