logger.dart 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. import 'package:logger/logger.dart' as logger_package;
  2. /// 日志工具类
  3. class AppLogger {
  4. static logger_package.Logger? _logger;
  5. /// 初始化日志(可选配置)
  6. static void init({
  7. logger_package.Level level = logger_package.Level.debug,
  8. bool enableFileOutput = false,
  9. }) {
  10. _logger = logger_package.Logger(
  11. level: level,
  12. printer: logger_package.PrettyPrinter(
  13. methodCount: 2,
  14. errorMethodCount: 8,
  15. lineLength: 120,
  16. colors: true,
  17. printEmojis: true,
  18. printTime: true,
  19. ),
  20. );
  21. }
  22. static logger_package.Logger get _instance {
  23. _logger ??= logger_package.Logger(
  24. level: logger_package.Level.debug, // 设置日志级别为 debug,确保所有日志都能输出
  25. printer: logger_package.PrettyPrinter(
  26. methodCount: 2,
  27. errorMethodCount: 8,
  28. lineLength: 120,
  29. colors: true,
  30. printEmojis: true,
  31. printTime: true,
  32. ),
  33. );
  34. return _logger!;
  35. }
  36. // ==================== 日志级别 ====================
  37. /// Debug 日志
  38. static void d(dynamic message, [dynamic error, StackTrace? stackTrace]) {
  39. _instance.d(message, error: error, stackTrace: stackTrace);
  40. }
  41. /// Info 日志
  42. static void i(dynamic message, [dynamic error, StackTrace? stackTrace]) {
  43. _instance.i(message, error: error, stackTrace: stackTrace);
  44. }
  45. /// Warning 日志
  46. static void w(dynamic message, [dynamic error, StackTrace? stackTrace]) {
  47. _instance.w(message, error: error, stackTrace: stackTrace);
  48. }
  49. /// Error 日志
  50. static void e(dynamic message, [dynamic error, StackTrace? stackTrace]) {
  51. _instance.e(message, error: error, stackTrace: stackTrace);
  52. }
  53. /// Fatal 日志
  54. static void f(dynamic message, [dynamic error, StackTrace? stackTrace]) {
  55. _instance.f(message, error: error, stackTrace: stackTrace);
  56. }
  57. // ==================== 便捷方法 ====================
  58. /// 记录 API 请求
  59. static void logRequest(String method, String url, {Map<String, dynamic>? headers, dynamic body}) {
  60. d('📤 Request: $method $url');
  61. if (headers != null) d('Headers: $headers');
  62. if (body != null) d('Body: $body');
  63. }
  64. /// 记录 API 响应
  65. static void logResponse(int statusCode, String url, {dynamic data}) {
  66. d('📥 Response: $statusCode $url');
  67. if (data != null) d('Data: $data');
  68. }
  69. /// 记录错误
  70. static void logError(String message, {dynamic error, StackTrace? stackTrace}) {
  71. e('❌ Error: $message', error, stackTrace);
  72. }
  73. /// 记录用户操作
  74. static void logUserAction(String action, {Map<String, dynamic>? params}) {
  75. i('👤 User Action: $action');
  76. if (params != null) i('Params: $params');
  77. }
  78. }