// utils/app_logger.dart import 'package:flutter/foundation.dart' show kReleaseMode; import 'dart:developer' as developer; // 日志级别枚举(必须在类外) enum AppLogLevel { debug, info, warn, error } /// 静态日志工具类,支持 Debug/Release 模式控制 class AppLogger { // 🔒 禁止外部实例化(虽然是静态类,但防止误用) AppLogger._(); // 是否启用日志(Release 模式下关闭) static bool get _isLoggingEnabled => !kReleaseMode; // === 日志输出主方法 === static void _log(AppLogLevel level, String message, {Object? error, StackTrace? stackTrace}) { if (!_isLoggingEnabled) return; final String levelStr = level.name.toUpperCase(); final String time = DateTime.now().toIso8601String().split('.').first; String logMessage = '[$time] [$levelStr] $message'; if (error != null) { logMessage += '\n🔥 Error: $error'; } developer.log( logMessage, name: 'AppLogger', error: error, stackTrace: stackTrace, ); } // === 便捷日志方法 === /// 调试日志 static void debug(String message) { _log(AppLogLevel.debug, message); } /// 一般信息 static void info(String message) { _log(AppLogLevel.info, message); } /// 警告日志 static void warn(String message, {Object? error}) { _log(AppLogLevel.warn, message, error: error); } /// 错误日志 static void error(String message, {Object? error, StackTrace? stackTrace}) { _log(AppLogLevel.error, message, error: error, stackTrace: stackTrace); } /// 高亮日志(用于关键节点) static void highlight(String message) { if (!_isLoggingEnabled) return; debug('✨✨✨ $message ✨✨✨'); } }