Flutter日志管理插件logman的使用

发布于 1周前 作者 vueper 来自 Flutter

Logman

Logman 是一个简单但功能强大的日志管理插件,适用于 Flutter 应用程序,并带有集成的用户界面和可选的调试页面。

特性

  • 使用单例模式实现易于使用的日志记录。
  • 支持多种日志类型:简单的、导航的和网络日志。
  • 可自定义的浮动用户界面覆盖层,在开发过程中显示日志。
  • 可选的调试页面用于详细的日志分析。
  • 用于网络日志记录的 Dio 拦截器。
  • 用于跟踪导航事件的 Navigator 观察者。

截图

截图1 截图2 截图3 截图4

安装

  1. 将 Logman 添加到您的 pubspec.yaml 文件中:
dependencies:
  logman: ^[latest_version]

[latest_version] 替换为 Logman 的最新版本。

  1. 安装它:
flutter packages get
  1. 在您的 Dart 代码中导入它:
import 'package:logman/logman.dart';

使用方法

在应用程序的根目录(MaterialApp 之后)初始化 Logman 并在整个应用程序中使用其实例。

  1. 连接覆盖层:
[@override](/user/override)
void initState() {
   super.initState();
   WidgetsBinding.instance.addPostFrameCallback((_) {
      logman.attachOverlay(
         context: context,
         debugPage: // 您的可选调试页面,
         button: // 您的可选自定义按钮,
         maxLogLifetime: // 设置单个日志记录的最大生存时间,
         maxLogCount: // 设置要保留的最大日志记录数,
      );
   });
}

您也可以通过 showOverlay 属性隐藏覆盖层,如下所示:

logman.attachOverlay(
    context: context,
    showOverlay: false,
);

这在生产环境中想要隐藏覆盖层时非常有用。此外,您可以使用 printLogs 属性禁用日志,如下所示:

logman.attachOverlay(
    context: context,
    printLogs: false,
    recordLogs: false,
);
  1. 记录事件

目前有三种类型的日志(简单的、导航的和网络的)。

对于记录简单的(信息)日志:

final Logman _logman = Logman.instance;

_logman.info('test'); // 记录一条信息日志

还有一个可以使用的 Dio 拦截器。您可以在 MaterialApp 中像这样使用 Navigator 观察者:

MaterialApp(
  title: 'Logman Demo',
  theme: ...,
  home: const MyHomePage(title: 'Logman Demo Home Page'),
  navigatorObservers: [
    LogmanNavigatorObserver(), // Navigator 观察者
  ],
)

示例

下面是一个完整的示例:

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

// 假设 HomePage 是已经定义的一个页面
import 'home_page.dart';

final ValueNotifier<bool> isDarkModeNotifier = ValueNotifier<bool>(false);

void main() {
  runApp(const MyApp());
}

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

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

class _MyAppState extends State<MyApp> {
  [@override](/user/override)
  void initState() {
    super.initState();
    Logman.instance.info('App started!'); // 应用启动时记录一条信息日志
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return ValueListenableBuilder(
      valueListenable: isDarkModeNotifier,
      builder: (context, isDarkMode, child) {
        return MaterialApp(
          title: 'Logman Demo',
          theme: ThemeData(
            colorScheme: ColorScheme.fromSeed(
              seedColor: Colors.blue.shade900,
              brightness: isDarkMode ? Brightness.dark : Brightness.light,
            ),
            useMaterial3: true,
            brightness: isDarkMode ? Brightness.dark : Brightness.light,
          ),
          home: const MyHomePage(title: 'Logman Demo Home Page'),
          navigatorObservers: [
            LogmanNavigatorObserver(), // 使用 Logman 的 Navigator 观察者
          ],
        );
      },
    );
  }
}

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

1 回复

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


当然,以下是如何在Flutter项目中集成和使用日志管理插件logman的详细步骤和代码示例。

第一步:添加依赖

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

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

然后运行以下命令以获取依赖:

flutter pub get

第二步:配置Logman

在项目的入口文件(通常是main.dart)中,配置Logman。

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

void main() {
  // 初始化Logman
  Logman.init(
    level: LogLevel.verbose,  // 设置日志级别
    printToConsole: true,     // 是否打印到控制台
    logFile: 'app_log.txt',   // 日志文件名称
  );

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter Logman Example'),
        ),
        body: Center(
          child: LogmanExampleWidget(),
        ),
      ),
    );
  }
}

第三步:在代码中使用Logman

你可以在你的Flutter应用中的任何地方使用Logman来记录日志。以下是一个简单的示例:

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

class LogmanExampleWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    // 记录不同级别的日志
    Logman.verbose('This is a verbose log message');
    Logman.debug('This is a debug log message');
    Logman.info('This is an info log message');
    Logman.warn('This is a warning log message');
    Logman.error('This is an error log message');

    return ElevatedButton(
      onPressed: () {
        // 触发一个错误并记录日志
        try {
          throw Exception('This is an example exception');
        } catch (e) {
          Logman.error('Exception caught: $e');
        }
      },
      child: Text('Trigger Error Log'),
    );
  }
}

第四步:查看日志

  • 控制台日志:如果你设置了printToConsole: true,则日志会自动打印到控制台。
  • 日志文件:日志文件会保存在应用的文件目录中,你可以通过设备的文件管理器查看,或者使用ADB等工具从Android设备中提取。

示例完整代码

以下是完整的示例代码:

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

void main() {
  Logman.init(
    level: LogLevel.verbose,
    printToConsole: true,
    logFile: 'app_log.txt',
  );

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter Logman Example'),
        ),
        body: Center(
          child: LogmanExampleWidget(),
        ),
      ),
    );
  }
}

class LogmanExampleWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    Logman.verbose('This is a verbose log message');
    Logman.debug('This is a debug log message');
    Logman.info('This is an info log message');
    Logman.warn('This is a warning log message');
    Logman.error('This is an error log message');

    return ElevatedButton(
      onPressed: () {
        try {
          throw Exception('This is an example exception');
        } catch (e) {
          Logman.error('Exception caught: $e');
        }
      },
      child: Text('Trigger Error Log'),
    );
  }
}

通过以上步骤,你就可以在Flutter项目中成功集成和使用logman插件来管理日志了。希望这些代码示例对你有帮助!

回到顶部