log.dart 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  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. );
  22. }
  23. static void info(dynamic msg, [dynamic error, StackTrace? stackTrace]) {
  24. if (isReleaseVersion()) {
  25. log(0, toNativeUtf8(msg));
  26. } else {
  27. Log.shared._logger.i(msg, error, stackTrace);
  28. }
  29. }
  30. static void debug(dynamic msg, [dynamic error, StackTrace? stackTrace]) {
  31. if (isReleaseVersion()) {
  32. log(1, toNativeUtf8(msg));
  33. } else {
  34. Log.shared._logger.d(msg, error, stackTrace);
  35. }
  36. }
  37. static void warn(dynamic msg, [dynamic error, StackTrace? stackTrace]) {
  38. if (isReleaseVersion()) {
  39. log(3, toNativeUtf8(msg));
  40. } else {
  41. Log.shared._logger.w(msg, error, stackTrace);
  42. }
  43. }
  44. static void trace(dynamic msg, [dynamic error, StackTrace? stackTrace]) {
  45. if (isReleaseVersion()) {
  46. log(2, toNativeUtf8(msg));
  47. } else {
  48. Log.shared._logger.v(msg, error, stackTrace);
  49. }
  50. }
  51. static void error(dynamic msg, [dynamic error, StackTrace? stackTrace]) {
  52. if (isReleaseVersion()) {
  53. log(4, toNativeUtf8(msg));
  54. } else {
  55. Log.shared._logger.e(msg, error, stackTrace);
  56. }
  57. }
  58. }
  59. bool isReleaseVersion() {
  60. return kReleaseMode;
  61. }
  62. Pointer<ffi.Utf8> toNativeUtf8(dynamic msg) {
  63. return "$msg".toNativeUtf8();
  64. }