You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

62 lines
1.5 KiB

import 'dart:developer' as developer;
/// 日志级别
enum LogLevel {
debug,
info,
warning,
error,
}
/// 日志工具类
///
/// 提供统一的日志记录接口,方便后续扩展和管理
class Logger {
/// 当前日志级别,低于此级别的日志不会被输出
static LogLevel _currentLevel = LogLevel.debug;
/// 设置日志级别
static void setLevel(LogLevel level) {
_currentLevel = level;
}
/// 输出调试日志
static void debug(String message) {
if (_currentLevel.index <= LogLevel.debug.index) {
_log('DEBUG', message);
}
}
/// 输出信息日志
static void info(String message) {
if (_currentLevel.index <= LogLevel.info.index) {
_log('INFO', message);
}
}
/// 输出警告日志
static void warning(String message) {
if (_currentLevel.index <= LogLevel.warning.index) {
_log('WARNING', message);
}
}
/// 输出错误日志
static void error(String message, [dynamic error, StackTrace? stackTrace]) {
if (_currentLevel.index <= LogLevel.error.index) {
_log('ERROR', message);
if (error != null) {
_log('ERROR', 'Original error: $error');
}
if (stackTrace != null) {
_log('ERROR', 'Stack trace: $stackTrace');
}
}
}
/// 内部日志输出方法
static void _log(String level, String message) {
final timestamp = DateTime.now().toString();
developer.log('[$timestamp] $level: $message');
}
}