import 'package:logger/logger.dart' as logger_package; /// 日志工具类 class AppLogger { static logger_package.Logger? _logger; /// 初始化日志(可选配置) static void init({ logger_package.Level level = logger_package.Level.debug, bool enableFileOutput = false, }) { _logger = logger_package.Logger( level: level, printer: logger_package.PrettyPrinter( methodCount: 2, errorMethodCount: 8, lineLength: 120, colors: true, printEmojis: true, printTime: true, ), ); } static logger_package.Logger get _instance { _logger ??= logger_package.Logger( printer: logger_package.PrettyPrinter( methodCount: 2, errorMethodCount: 8, lineLength: 120, colors: true, printEmojis: true, printTime: true, ), ); return _logger!; } // ==================== 日志级别 ==================== /// Debug 日志 static void d(dynamic message, [dynamic error, StackTrace? stackTrace]) { _instance.d(message, error: error, stackTrace: stackTrace); } /// Info 日志 static void i(dynamic message, [dynamic error, StackTrace? stackTrace]) { _instance.i(message, error: error, stackTrace: stackTrace); } /// Warning 日志 static void w(dynamic message, [dynamic error, StackTrace? stackTrace]) { _instance.w(message, error: error, stackTrace: stackTrace); } /// Error 日志 static void e(dynamic message, [dynamic error, StackTrace? stackTrace]) { _instance.e(message, error: error, stackTrace: stackTrace); } /// Fatal 日志 static void f(dynamic message, [dynamic error, StackTrace? stackTrace]) { _instance.f(message, error: error, stackTrace: stackTrace); } // ==================== 便捷方法 ==================== /// 记录 API 请求 static void logRequest(String method, String url, {Map? headers, dynamic body}) { d('📤 Request: $method $url'); if (headers != null) d('Headers: $headers'); if (body != null) d('Body: $body'); } /// 记录 API 响应 static void logResponse(int statusCode, String url, {dynamic data}) { d('📥 Response: $statusCode $url'); if (data != null) d('Data: $data'); } /// 记录错误 static void logError(String message, {dynamic error, StackTrace? stackTrace}) { e('❌ Error: $message', error, stackTrace); } /// 记录用户操作 static void logUserAction(String action, {Map? params}) { i('👤 User Action: $action'); if (params != null) i('Params: $params'); } }