diff options
-rw-r--r-- | lib/control/flutter_blue_plus_scanner_controller.dart | 4 | ||||
-rw-r--r-- | lib/control/scanner_controller_impl.dart | 4 | ||||
-rw-r--r-- | lib/control/universal_ble_scanner_controller.dart | 4 | ||||
-rw-r--r-- | lib/log.dart | 58 | ||||
-rw-r--r-- | lib/main.dart | 6 | ||||
-rw-r--r-- | lib/model/connection/flutter_blue_plus_device_connection.dart | 4 | ||||
-rw-r--r-- | lib/view_model/badge_motive_view_model.dart | 4 | ||||
-rw-r--r-- | lib/widgets/device_details.dart | 4 | ||||
-rw-r--r-- | lib/widgets/scan_page.dart | 4 |
9 files changed, 75 insertions, 17 deletions
diff --git a/lib/control/flutter_blue_plus_scanner_controller.dart b/lib/control/flutter_blue_plus_scanner_controller.dart index 1c93cf6..62cc850 100644 --- a/lib/control/flutter_blue_plus_scanner_controller.dart +++ b/lib/control/flutter_blue_plus_scanner_controller.dart @@ -15,13 +15,13 @@ import 'dart:async'; import 'package:uvok_epaper_badge/control/scanner_controller_impl.dart'; +import 'package:uvok_epaper_badge/log.dart'; import 'package:uvok_epaper_badge/model/device/flutter_blue_plus_device.dart'; import 'package:uvok_epaper_badge/model/device/device.dart'; import 'package:uvok_epaper_badge/control/scanner_controller.dart'; import 'package:flutter_blue_plus/flutter_blue_plus.dart'; -import 'package:logger/logger.dart'; -var logger = Logger(); +var logger = fileLogger(); class FlutterBluePlusScannerController extends ScannerControllerImpl { late final StreamSubscription<BluetoothAdapterState> _availSubs; diff --git a/lib/control/scanner_controller_impl.dart b/lib/control/scanner_controller_impl.dart index de64398..df9532b 100644 --- a/lib/control/scanner_controller_impl.dart +++ b/lib/control/scanner_controller_impl.dart @@ -14,14 +14,14 @@ // along with this program. If not, see <https://www.gnu.org/licenses/>. import 'dart:async'; -import 'package:logger/logger.dart'; import 'package:uvok_epaper_badge/control/scanner_controller.dart'; import 'package:meta/meta.dart'; +import 'package:uvok_epaper_badge/log.dart'; import 'package:uvok_epaper_badge/model/device/device.dart'; import 'package:rxdart/rxdart.dart'; -Logger logger = Logger(); +var logger = fileLogger(); /// Helper class which provides the setStatus method. abstract class ScannerControllerImpl implements ScannerController { diff --git a/lib/control/universal_ble_scanner_controller.dart b/lib/control/universal_ble_scanner_controller.dart index 6cad770..2dd6d5d 100644 --- a/lib/control/universal_ble_scanner_controller.dart +++ b/lib/control/universal_ble_scanner_controller.dart @@ -15,14 +15,14 @@ import 'dart:async'; -import 'package:logger/logger.dart'; import 'package:universal_ble/universal_ble.dart'; import 'package:uvok_epaper_badge/control/scanner_controller.dart'; import 'package:uvok_epaper_badge/control/scanner_controller_impl.dart'; import 'package:uvok_epaper_badge/extensions/list_ext.dart'; +import 'package:uvok_epaper_badge/log.dart'; import 'package:uvok_epaper_badge/model/device/universal_ble_device.dart'; -Logger logger = Logger(); +var logger = fileLogger(); class UniversalBleScannerController extends ScannerControllerImpl { StreamSubscription<BleDevice>? _subScan; diff --git a/lib/log.dart b/lib/log.dart new file mode 100644 index 0000000..6029ae9 --- /dev/null +++ b/lib/log.dart @@ -0,0 +1,58 @@ +// Copyright (C) 2025, uvok cheetah +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see <https://www.gnu.org/licenses/>. + +import 'package:logger/logger.dart'; + +Logger fileLogger([String? name]) { + String fileName = "???"; + + if (name == null) { + final String? callerName = StackTrace.current + .toString() + .split('\n') + .elementAtOrNull(1); + if (callerName != null) { + final int start = callerName.indexOf("package:"); + if (start != -1) { + final int fileNameStart = start + "package:".length; + final int end = callerName.indexOf(":", fileNameStart); + + if (end != -1 && end > fileNameStart) { + fileName = callerName.substring(fileNameStart, end); + } + } + } + } else { + fileName = name; + } + return Logger(printer: FilePrefixPrinter(SimplePrinter(), fileName)); +} + +class FilePrefixPrinter extends LogPrinter { + final LogPrinter delegate; + final String fileName; + + FilePrefixPrinter(this.delegate, this.fileName); + + @override + List<String> log(LogEvent event) { + final lines = delegate.log(event); + return lines.map((line) { + // ugh..... relying on implementation details... + var e = line.indexOf("[0m") + 3; + return '${line.substring(0, e)} [$fileName] ${line.substring(e)}'; + }).toList(); + } +} diff --git a/lib/main.dart b/lib/main.dart index 90eba85..f3fea9e 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -17,12 +17,12 @@ import 'package:uvok_epaper_badge/control/flutter_blue_plus_scanner_controller.d import 'package:uvok_epaper_badge/control/mock_scanner_controller.dart'; import 'package:uvok_epaper_badge/control/scanner_controller.dart'; import 'package:uvok_epaper_badge/control/universal_ble_scanner_controller.dart'; +import 'package:uvok_epaper_badge/log.dart' show fileLogger; import 'package:uvok_epaper_badge/widgets/badge_app.dart'; -import 'package:flutter/material.dart'; -import 'package:logger/logger.dart'; +import 'package:flutter/material.dart'; -var logger = Logger(); +var logger = fileLogger(); void main() { // needed for UniversalBlue, as I initialize the controller early... diff --git a/lib/model/connection/flutter_blue_plus_device_connection.dart b/lib/model/connection/flutter_blue_plus_device_connection.dart index 5cb9eb2..37866aa 100644 --- a/lib/model/connection/flutter_blue_plus_device_connection.dart +++ b/lib/model/connection/flutter_blue_plus_device_connection.dart @@ -17,12 +17,12 @@ import 'dart:async'; import 'package:flutter/foundation.dart'; import 'package:flutter_blue_plus/flutter_blue_plus.dart'; -import 'package:logger/logger.dart'; import 'package:uvok_epaper_badge/extensions/iterable_ext.dart'; +import 'package:uvok_epaper_badge/log.dart'; import 'package:uvok_epaper_badge/model/connection/device_connection.dart'; import 'package:uvok_epaper_badge/model/device/flutter_blue_plus_device.dart'; -var logger = Logger(); +var logger = fileLogger(); class FlutterBluePlusDeviceConnection implements DeviceConnection { final ValueNotifier<ConnectionStatus> _status = ValueNotifier( diff --git a/lib/view_model/badge_motive_view_model.dart b/lib/view_model/badge_motive_view_model.dart index 64ba387..cf4bf27 100644 --- a/lib/view_model/badge_motive_view_model.dart +++ b/lib/view_model/badge_motive_view_model.dart @@ -14,11 +14,11 @@ // along with this program. If not, see <https://www.gnu.org/licenses/>. import 'package:flutter/foundation.dart'; -import 'package:logger/logger.dart'; +import 'package:uvok_epaper_badge/log.dart'; import 'package:uvok_epaper_badge/model/badge_motive.dart'; import 'package:uvok_epaper_badge/model/motive_selection/badge_motive_selection.dart'; -Logger logger = Logger(); +var logger = fileLogger(); class BadgeMotiveViewModel extends ChangeNotifier { final BadgeMotiveSelection _motivSelect; diff --git a/lib/widgets/device_details.dart b/lib/widgets/device_details.dart index dc8ca97..a865e45 100644 --- a/lib/widgets/device_details.dart +++ b/lib/widgets/device_details.dart @@ -15,16 +15,16 @@ import 'dart:ui'; +import 'package:uvok_epaper_badge/log.dart'; import 'package:uvok_epaper_badge/model/badge_motive_selection_factory.dart'; import 'package:uvok_epaper_badge/model/device/device.dart'; import 'package:flutter/material.dart'; -import 'package:logger/logger.dart'; import 'package:uvok_epaper_badge/model/connection/device_connection.dart'; import 'package:uvok_epaper_badge/model/motive_selection/badge_motive_selection.dart'; import 'package:uvok_epaper_badge/view_model/badge_motive_view_model.dart'; import 'package:uvok_epaper_badge/widgets/badge_motive_list.dart'; -var logger = Logger(); +var logger = fileLogger(); class DeviceDetailsScreen extends StatefulWidget { final Device device; diff --git a/lib/widgets/scan_page.dart b/lib/widgets/scan_page.dart index f6695fe..650ad01 100644 --- a/lib/widgets/scan_page.dart +++ b/lib/widgets/scan_page.dart @@ -16,16 +16,16 @@ import 'dart:io'; import 'package:uvok_epaper_badge/control/scanner_controller.dart'; +import 'package:uvok_epaper_badge/log.dart'; import 'package:uvok_epaper_badge/widgets/device_details.dart'; import 'package:uvok_epaper_badge/widgets/device_scan_select.dart'; import 'package:uvok_epaper_badge/model/device/device.dart'; import 'package:flutter/material.dart'; -import 'package:logger/logger.dart'; import 'package:permission_handler/permission_handler.dart'; import 'package:uvok_epaper_badge/model/connection/device_connection.dart'; import 'package:uvok_epaper_badge/model/device_connection_factory.dart'; -var logger = Logger(); +var logger = fileLogger(); class ScanPage extends StatefulWidget { const ScanPage({super.key, required this.title, required this.deviceScanner}); |