log.dart 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. // ignore: import_of_legacy_library_into_null_safe
  2. import 'dart:ffi';
  3. import 'package:flutter/foundation.dart';
  4. import 'package:logger/logger.dart';
  5. import 'package:ffi/ffi.dart' as ffi;
  6. import 'ffi.dart';
  7. class Log {
  8. static final shared = Log();
  9. late Logger _logger;
  10. Log() {
  11. _logger = Logger(
  12. printer: PrettyPrinter(
  13. methodCount: 2, // number of method calls to be displayed
  14. errorMethodCount:
  15. 8, // number of method calls if stacktrace is provided
  16. lineLength: 120, // width of the output
  17. colors: true, // Colorful log messages
  18. printEmojis: true, // Print an emoji for each log message
  19. printTime: false // Should each log print contain a timestamp
  20. ),
  21. level: kDebugMode ? Level.verbose : Level.info,
  22. );
  23. }
  24. static void info(dynamic msg, [dynamic error, StackTrace? stackTrace]) {
  25. if (isReleaseVersion()) {
  26. log(0, toNativeUtf8(msg));
  27. } else {
  28. Log.shared._logger.i(msg, error, stackTrace);
  29. }
  30. }
  31. static void debug(dynamic msg, [dynamic error, StackTrace? stackTrace]) {
  32. if (isReleaseVersion()) {
  33. log(1, toNativeUtf8(msg));
  34. } else {
  35. Log.shared._logger.d(msg, error, stackTrace);
  36. }
  37. }
  38. static void warn(dynamic msg, [dynamic error, StackTrace? stackTrace]) {
  39. if (isReleaseVersion()) {
  40. log(3, toNativeUtf8(msg));
  41. } else {
  42. Log.shared._logger.w(msg, error, stackTrace);
  43. }
  44. }
  45. static void trace(dynamic msg, [dynamic error, StackTrace? stackTrace]) {
  46. if (isReleaseVersion()) {
  47. log(2, toNativeUtf8(msg));
  48. } else {
  49. Log.shared._logger.v(msg, error, stackTrace);
  50. }
  51. }
  52. static void error(dynamic msg, [dynamic error, StackTrace? stackTrace]) {
  53. if (isReleaseVersion()) {
  54. log(4, toNativeUtf8(msg));
  55. } else {
  56. Log.shared._logger.e(msg, error, stackTrace);
  57. }
  58. }
  59. }
  60. bool isReleaseVersion() {
  61. return kReleaseMode;
  62. }
  63. Pointer<ffi.Utf8> toNativeUtf8(dynamic msg) {
  64. return "$msg".toNativeUtf8();
  65. }