Flutter日志管理插件dotup_flutter_logger的使用

Flutter日志管理插件dotup_flutter_logger的使用

在Flutter应用开发过程中,有效地管理和查看日志对于调试和监控应用程序的状态至关重要。dotup_flutter_logger 是一个专门为此目的设计的插件,它允许开发者以结构化的方式记录日志,并且提供了可视化界面来查看这些日志。

安装

首先,你需要在项目的 pubspec.yaml 文件中添加 dotup_flutter_logger 依赖:

dependencies:
  dotup_flutter_logger: ^x.x.x  # 请替换为最新版本号

然后运行 flutter pub get 来安装该插件。

使用示例

初始化和配置

在你的应用启动时,需要初始化并配置日志管理器。以下是一个简单的示例:

import 'package:dotup_dart_logger/dotup_dart_logger.dart';
import 'package:dotup_flutter_logger/dotup_flutter_logger.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';

late final ILogWriter sqfLiteLogWriter;

final logger = Logger('Logger demo');

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 添加控制台日志记录器
  LoggerManager.addLogWriter(ConsoleLogWriter(LogLevel.All, formater: PrettyFormater(showColors: true)));

  runApp(const LoggerDemoProvider());
}

主应用

创建主应用类 LoggerDemoApp,并在其中设置主题和主页:

class LoggerDemoApp extends StatelessWidget {
  const LoggerDemoApp({Key? key}) : super(key: key);

  [@override](/user/override)
  Widget build(BuildContext context) {
    logger.console('LoggerDemoApp build');
    return Consumer<ThemeProvider>(
      builder: (context, themeProvider, child) {
        return MaterialApp(
          debugShowCheckedModeBanner: false,
          title: 'dotup.de Logger Demo',
          theme: themeProvider.lightTheme,
          darkTheme: themeProvider.darkTheme,
          themeMode: themeProvider.themeMode,
          home: const LoggerDemoScaffold(),
        );
      },
    );
  }
}

日志管理提供者

创建 LoggerDemoProvider 类来提供主题切换功能:

class LoggerDemoProvider extends StatelessWidget {
  const LoggerDemoProvider({Key? key}) : super(key: key);

  [@override](/user/override)
  Widget build(BuildContext context) {
    logger.console('LoggerDemoProvider build');
    return MultiProvider(
      providers: [
        ChangeNotifierProvider(
          create: (context) {
            final themeProvider = ThemeProvider.defaultThemes();
            themeProvider.switchTheme(false);
            return themeProvider;
          },
        )
      ],
      child: const LoggerDemoApp(),
    );
  }
}

日志显示界面

创建 LoggerDemoScaffold 类来展示日志列表界面:

class LoggerDemoScaffold extends StatefulWidget {
  const LoggerDemoScaffold({super.key});

  [@override](/user/override)
  State<LoggerDemoScaffold> createState() => _LoggerDemoScaffoldState();
}

class _LoggerDemoScaffoldState extends State<LoggerDemoScaffold> {
  late LoggerListController controller;
  late LoggerListSettings settings;

  [@override](/user/override)
  void initState() {
    super.initState();
    controller = LoggerListController(stackSize: 50);
    settings = LoggerListSettings.standard();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return LoggerScaffold(
      appBar: AppBar(
        title: const Text('dotup Logger'),
        actions: [
          IconButton(
            icon: const Icon(Icons.add),
            tooltip: '添加条目',
            onPressed: _createDemoEntry,
          ),
          IconButton(
            icon: const Icon(Icons.settings),
            tooltip: '设置',
            onPressed: () async {
              logger.info('设置打开');
              final newSettings = await Navigator.of(context).push<LoggerListSettings>(
                MaterialPageRoute(
                  builder: (context) => LoggerListSettingsPage(settings: settings),
                ),
              );

              if (newSettings != null) {
                controller.setFilter(newSettings.logLevelStates);
                controller.stackSize = newSettings.pageSize;
                settings = newSettings;
                logger.info('新设置已应用');
              }
            },
          ),
        ],
      ),
      title: 'dotup Logger',
    );
  }

  void _createDemoEntry() {
    var random = Random(DateTime.now().microsecondsSinceEpoch);
    var next = 1 << random.nextInt(LogLevel.values.length);
    var nextLevel = LogLevel.fromValue(next);

    switch (nextLevel) {
      case LogLevel.Debug:
        logger.debug("这是一条调试信息。如果准备上线,请禁用调试信息!",
            source: 'SOURCE1');
        break;

      case LogLevel.Error:
        logger.error(MyError("我们遇到了问题!"));
        break;

      case LogLevel.Exception:
        logger.exception(MyException('这种情况可能会发生..'));
        break;

      case LogLevel.Info:
        logger.info("我想你已经知道这条信息了。");
        break;

      case LogLevel.Warn:
        logger.warn("哦哦,它正在工作。可能你应该看看你的源代码为什么这种错误频繁出现?");
        break;

      default:
        logger.warn('nextLevel == ${nextLevel.name}');
    }
  }
}

class MyError extends Error {
  final String message;
  MyError(this.message);

  [@override](/user/override)
  String toString() {
    return message;
  }
}

class MyException implements Exception {
  final String? message;

  MyException([this.message]);

  [@override](/user/override)
  String toString() {
    if (message == null) return '异常';
    return '异常: $message';
  }
}

更多关于Flutter日志管理插件dotup_flutter_logger的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter日志管理插件dotup_flutter_logger的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


dotup_flutter_logger 是一个用于 Flutter 的日志管理插件,它可以帮助开发者更方便地记录和管理应用程序中的日志。以下是使用 dotup_flutter_logger 的基本步骤和示例。

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 dotup_flutter_logger 依赖。

dependencies:
  flutter:
    sdk: flutter
  dotup_flutter_logger: ^1.0.0  # 请使用最新版本

然后运行 flutter pub get 来安装依赖。

2. 初始化 Logger

在你的 Dart 文件中导入 dotup_flutter_logger 并初始化日志记录器。

import 'package:dotup_flutter_logger/dotup_flutter_logger.dart';

void main() {
  Logger.initialize();  // 初始化 Logger
  runApp(MyApp());
}

3. 使用 Logger

在你的代码中使用 Logger 来记录日志。

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    Logger.info('Application started');  // 记录信息级别的日志
    Logger.warning('This is a warning'); // 记录警告级别的日志
    Logger.error('An error occurred');   // 记录错误级别的日志

    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

4. 配置 Logger

你可以通过配置 Logger 来定制日志输出。

Logger.initialize(
  level: Level.ALL,  // 设置日志级别
  printer: PrettyPrinter(),  // 设置日志打印器
  output: ConsoleOutput(),  // 设置日志输出方式
);

5. 日志级别

dotup_flutter_logger 支持多种日志级别,包括:

  • Level.ALL: 记录所有日志
  • Level.DEBUG: 记录调试信息
  • Level.INFO: 记录一般信息
  • Level.WARNING: 记录警告信息
  • Level.ERROR: 记录错误信息
  • Level.NONE: 不记录任何日志

你可以根据需要设置日志级别。

6. 自定义日志输出

你可以通过实现 LogPrinterLogOutput 接口来自定义日志的打印和输出方式。

class CustomPrinter extends LogPrinter {
  @override
  void log(LogEvent event) {
    // 自定义日志打印逻辑
    print('Custom Log: ${event.message}');
  }
}

class CustomOutput extends LogOutput {
  @override
  void output(LogEvent event) {
    // 自定义日志输出逻辑
    print('Custom Output: ${event.message}');
  }
}

void main() {
  Logger.initialize(
    printer: CustomPrinter(),
    output: CustomOutput(),
  );
  runApp(MyApp());
}

7. 日志文件存储

如果你需要将日志保存到文件中,可以使用 FileOutput

Logger.initialize(
  output: FileOutput('app.log'),  // 将日志保存到 app.log 文件中
);

8. 日志格式化

你可以使用 PrettyPrinter 来美化日志输出格式。

Logger.initialize(
  printer: PrettyPrinter(
    methodCount: 2,  // 显示方法调用的数量
    errorMethodCount: 8,  // 显示错误信息中的方法调用数量
    lineLength: 120,  // 每行的最大长度
    colors: true,  // 是否使用颜色
    printEmojis: true,  // 是否打印表情符号
  ),
);

9. 日志过滤

你可以通过设置日志级别来过滤日志。

Logger.initialize(
  level: Level.WARNING,  // 只记录警告及以上级别的日志
);

10. 日志清除

你可以通过调用 Logger.clear() 来清除所有日志。

Logger.clear();
回到顶部