65 lines
1.7 KiB
Dart
65 lines
1.7 KiB
Dart
// 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 ✨✨✨');
|
||
}
|
||
} |