starwork_flutter/lib/base/app_logger.dart
2025-09-06 15:42:26 +08:00

65 lines
1.7 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 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 ✨✨✨');
}
}