Flutter日志管理插件flutter_mxlogger的使用

Flutter日志管理插件flutter_mxlogger的使用

MXLogger 是一个基于mmap内存映射机制的跨平台日志库,支持AES CFB 128位加密,适用于iOS、Android和Flutter。其核心代码使用C/C++实现,并通过Flutter的ffi调用,确保性能几乎与原生一致。底层序列化使用Google开源的flat_buffers实现,保证了高效性和稳定性。

更多关于MXLogger的详细信息,请访问GitHub

快速开始

首先,在你的Flutter项目中添加flutter_mxlogger依赖:

dependencies:
  flutter_mxlogger: ^latest_version

然后,初始化并配置MXLogger实例:

import 'package:flutter_mxlogger/flutter_mxlogger.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  MXLogger logger = await MXLogger.initialize(
      nameSpace: "flutter.mxlogger",
      storagePolicy: "yyyy_MM_dd_HH", // 按小时存储日志
      cryptKey: "abcuioqbsdguijlk", // 加密密钥
      iv: "bccuioqbsdguijiv"); // 初始化向量

  // 设置最大磁盘日志保存时间(一周)
  logger.setMaxDiskAge(60 * 60 * 24 * 7);
  // 设置最大磁盘日志大小(10MB)
  logger.setMaxDiskSize(1024 * 1024 * 10);
  // 设置文件级别为调试级
  logger.setFileLevel(0);

  // 记录不同级别的日志
  logger.debug("this is debug message", name: "mxlogger", tag: "net,response");
  logger.info("this is info message", name: "mxlogger", tag: "tag1,tag2,tag3");
  logger.warn("this is warn message", name: "mxlogger", tag: "tag1,tag2,tag3");
  logger.error("this is error message", name: "mxlogger", tag: "tag1,tag2,tag3");
  logger.fatal("this is fatal message", name: "mxlogger", tag: "tag1,tag2,tag3");

  runApp(MyApp());
}

解析日志文件

MXLogger生成的日志文件是二进制格式的,可以使用专门的解析器进行查看。你可以下载mxlogger_analyzer来解析这些日志文件。更多关于解析器的信息,请参阅GitHub上的说明。

示例Demo

以下是一个完整的示例应用,展示了如何在Flutter应用中集成和使用MXLogger:

import 'package:flutter/material.dart';
import 'log_page.dart';

final navkey = GlobalKey<NavigatorState>();

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({Key? key}) : super(key: key);

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  [@override](/user/override)
  void initState() {
    super.initState();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      navigatorKey: navkey,
      home: Builder(builder: (context) {
        return Scaffold(
          appBar: AppBar(
            title: const Text('Plugin example app'),
          ),
          body: Center(
              child: Column(
                children: [
                  ElevatedButton(
                    onPressed: () {
                      Navigator.of(context).push(MaterialPageRoute(builder: (context) {
                        return LogPage();
                      }));
                    },
                    child: Text("进入日志页面"),
                  ),
                ],
              )),
        );
      }),
    );
  }
}

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

1 回复

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


当然,以下是如何在Flutter项目中使用flutter_mxlogger插件来进行日志管理的示例代码。这个插件可以帮助你更高效地管理和输出日志信息。

首先,确保你已经在pubspec.yaml文件中添加了flutter_mxlogger依赖:

dependencies:
  flutter:
    sdk: flutter
  flutter_mxlogger: ^最新版本号  # 请替换为实际的最新版本号

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

接下来,你可以按照以下步骤在你的Flutter项目中使用flutter_mxlogger

  1. 初始化Logger实例

    在你的应用入口文件(通常是main.dart)中初始化Logger实例。

    import 'package:flutter/material.dart';
    import 'package:flutter_mxlogger/flutter_mxlogger.dart';
    
    void main() {
      // 初始化Logger实例
      Logger.init(
        level: LogLevel.verbose, // 设置日志级别
        printToConsole: true,    // 是否输出到控制台
        logFilePath: 'app_logs.txt', // 日志文件路径(仅在支持文件系统的平台上有效)
        maxFileSize: 1024 * 1024, // 日志文件最大大小(字节)
        maxFilesCount: 5,        // 保留的最大日志文件数量
      );
    
      runApp(MyApp());
    }
    
    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          title: 'Flutter Demo',
          theme: ThemeData(
            primarySwatch: Colors.blue,
          ),
          home: MyHomePage(),
        );
      }
    }
    
    class MyHomePage extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            title: Text('Flutter Demo Home Page'),
          ),
          body: Center(
            child: Text('Check the console or log file for logs.'),
          ),
        );
      }
    }
    
  2. 记录日志

    在你的应用代码中,你可以使用Logger实例来记录不同级别的日志信息。

    import 'package:flutter_mxlogger/flutter_mxlogger.dart';
    
    void logExample() {
      Logger.verbose('This is a verbose log message.');
      Logger.debug('This is a debug log message.');
      Logger.info('This is an info log message.');
      Logger.warn('This is a warning log message.');
      Logger.error('This is an error log message.');
    }
    
    // 在某个合适的地方调用logExample函数,例如在按钮点击事件中
    class MyHomePage extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            title: Text('Flutter Demo Home Page'),
          ),
          body: Center(
            child: ElevatedButton(
              onPressed: () {
                logExample();
              },
              child: Text('Log Messages'),
            ),
          ),
        );
      }
    }
    
  3. 查看日志

    • 控制台:如果printToConsole设置为true,日志信息将输出到控制台。你可以在运行Flutter应用时查看控制台输出。
    • 日志文件:日志文件将保存到指定的路径(在上面的示例中是app_logs.txt)。在支持文件系统的平台上(如Android和iOS模拟器/设备),你可以通过设备文件管理器或连接设备到开发机器上来查看日志文件。

这样,你就成功地在Flutter项目中集成了flutter_mxlogger插件,并可以使用它来记录和管理日志信息。这个插件提供了灵活的日志级别配置和日志存储选项,非常适合用于开发和调试阶段。

回到顶部