Flutter 的 Debug 日志管理,可自定义多种输出样式

1,407 阅读7分钟

WX20230508-144441@2x.png

[》跳过拾光记忆]

拾光记忆

1. Flutter 项目资产管理,看这一篇就够了!

简介: 针对 Flutter 项目资产管理的脚本服务。Fam 具有以下特点: 支持多种平台以及各平台无差异化、界面美观、功能齐全、快捷方便。
推荐: ⭐️⭐️⭐️⭐️⭐️

2. Flutter 手势在多指触摸时一些方法会多次触发

简介: 针对 Flutter 多手指检测以及手势触发其他手势也触发的问题。
推荐: ⭐️⭐️⭐️⭐️⭐️

3. Dart 的枚举类型的高阶用法

简介: 这是让开发者更深入的了解 Dart 的枚举以及相关使用和方法。
推荐: ⭐️⭐️⭐️

4. Flutter 可以快速实现单项或者多项选择,你知道吗?

简介: 这是让开发者更加便捷的实现单选、多选功能,无需你对数据处理。
推荐: ⭐️⭐️⭐️⭐️⭐️

5. Flutter 的吸收指针和忽略指针的作用以及区别

简介: 这是让开发者更深入的了解 Flutter 的两种指针的介绍以及相关使用和方法。
推荐: ⭐️⭐️⭐️

6. Flutter 项目滑动轨道的高阶用法

简介: 这是让开发者更加便捷的实现多种样式的轨道滑块,比如:轨道渐变色、触控笔悬浮标等。
推荐: ⭐️⭐️⭐️⭐️⭐️

[返回拾光记忆《]

一、 简述

在开发中日志的输入是必要的。输出的日志能够让我们明显的看到代码中一些数据的变化以及一些逻辑过程的进展。官方提供的日志输出有 printdebugPrint以及 log ,我们一般常用的是 debugPrintlog, 而 print 在代码分析中会有警告提示。然而, debugPrintlog 有时也不能满足我们的需求,输出的日志让我们不能区分是那个文件、那个小部件、那个方法、第几行调用的以及在日志收集时更是无法通过日志进行分析和参考。

二、 IDKitLog 介绍

IDKitLogIDKit 包的一个功能,该包管理托管于 FlutterPub.dev 平台进行控制和管理。IDKitLog 是拥有多种样式的日志输出管理工具,包含有颜色、输出信息、输出装饰符以及分割装饰符等进行自定义。

  • IDKitLog 提供了五种日志输出方法,如下:

    • IDKitLog.value
      该方法可以进行多种数据类型的变量进行输出。
    • IDKitLog.list
      该方法可以进行集合类型的数据进行整体输出或者每个元素展开输出。
    • IDKitLog.iterable 该方法可以进行带有索引值集合类型的数据进行整体输出或者每个元素展开输出。
    • IDKitLog.map
      该方法可以对键值集合的类型数据整体输出或者进行键值对应展开输出。
    • IDKitLog.json
      该方法可以将想要输出的内容以 Json 字符串的样式进行输出。
  • IDKitLog 提供语言 IDKitLog 还提供了多种语言日志输出样式,目前有中文、英文,可通过 LogOption 中的 Language 枚举进行设置,该枚举的值,如下:

    • Language.en
      英文输出模式
    • Language.zh
      中文输出模式
  • IDKitLog 提供颜色主题 IDKitLog 还提供了多种颜色主题输出样式,目前有 7 种颜色,可通过 LogOption 中的 ColorTheme 枚举进行设置,该枚举值,如下:

    • ColorTheme.red
      以红色进行日志的输出
    • ColorTheme.yellow
      以黄色进行日志的输出
    • ColorTheme.green
      以绿色进行日志的输出
    • ColorTheme.blue
      以蓝色进行日志的输出
    • ColorTheme.cyan
      以青色进行日志的输出
    • ColorTheme.white
      以白色进行日志的输出
    • ColorTheme.black
      以黑色进行日志的输出
  • IDKitLog 还提供了3种日志内容输出样式,可以通过 LogOption 中的 LogMode 枚举进行设置,该枚举值如下:

    • LogMode.normal
      日志内容标准模式输出,标准模式包含: 该日志被调用文件路径、被调用文件中那个小部件、被调用文件中那个小部件中的那个方法、被调用文件中的行数以及输出内容。

    • LogMode.brief
      日志内容简洁模式输出,简洁模式包含: 该日志被调用文件路径、被调用文件中的行数以及输出内容。

    • LogMode.full
      日志复杂标准模式输出,复杂模式包含: 该日志被调用项目、被调用时间、日志服务者、被调用文件路径、被调用文件中那个小部件、被调用文件中那个小部件中的那个方法、被调用文件中的行数以及输出内容。

三、IDKitLog 的配置选项 LogOption 介绍

LogOptionIDKitLog 输出展示样式配置选项。该类包含的属性及介绍,如下:

  • projectName
    项目名称,在输出内容复杂样式时会被输出展示。默认值为: idkit_log

  • isEnable
    日志输出是否可用

  • language
    日志输出语言形式, 有英文、中文样式。

  • colorTheme
    日志输出颜色主题。有 红色、黄色、绿色、青色、蓝色、白色、黑色等样式。

  • decorator
    日志的输出装饰符,默认为 *

  • splitDecorator
    日志输出分割装饰符,默认为 -

  • mode
    日志输出内容样式,有 简洁、标准、复杂三种模式。

四、 IDKitLog 的使用准备

  • 第一步
    在项目中的 pubspec.yaml 文件中的 dependencies -> flutter 模块下写入 idkit: ^ 0.3.0 或者在项目的根目录终端下执行 flutter pub add idkt 指令会自动添加 idkit: ^ 0.3.0

  • 第二步
    在项目的 main.dart 文件的头文件中引入 import 'package:idkit/idkit.dart'; 头文件。然后再 main() 方法中写入日志管理代码,如下:

    void main() {
      IDKitLog.init();
      runApp(const MyApp());
    }
    

    或者

    void main() {
      IDKitLog.init(
        option: const LogOption(
          isEnable: true,
          colorTheme: ColorTheme.red,
          language: Language.zh,
        ),
      );
      runApp(const MyApp());
    }
    
  • 第三步
    在要日志输出文件中引入 import 'package:idkit/idkit.dart'; 头文件, 然后,就可以使用 IDKitLog.xx 方法进行日志的输出。

五、 IDkitLog 的展示

1.日志语言
void idkit_log() {
  IDKitLog.value('我是日志输出展示');
}

输出展示如下:

log1.png

我们更改日志输出语言, 有两种方式,方式1:

void main() {
  IDKitLog.init(option: const LogOption(language: Language.zh));
  runApp(const MyApp());
}

全局修改,修改完不能实时生效,需要重新运行项目。方式2:

void idkit_log() {
  IDKitLog.value(
    '我是日志输出展示',
    option: const LogOption(language: Language.zh),
  );
}

这种方式会实时生效,输出样式如下:

log2.png

2.日志颜色

我们更改日志输出颜色,如下所示:方式1:全局模式不会实时生效:

void main() {
  IDKitLog.init(
      option: const LogOption(
    language: Language.zh,
    colorTheme: ColorTheme.red,
  ));
  runApp(const MyApp());
}

方式2: 实时生效

void idkit_log() {
  IDKitLog.value(
    '我是日志输出展示',
    option: const LogOption(
      language: Language.zh,
      colorTheme: ColorTheme.red,
    ),
  );
}

输出样式如下:

log3.png

3.集合数据

我们修改日志输出方法,以 list 数据输出:

void idkit_log() {
  IDKitLog.list(
    [
      1,
      '日志',
      {'a': 110}
    ],
  );
}

输出结果为:

log4.png

我们还可以将数据展开形式输出,如下:

void idkit_log() {
  IDKitLog.list(
    [
      1,
      '日志',
      {'a': 110}
    ],
    isExpand: true,
  );
}

输出结果如下:

log5.png

4.键值集合数据

我们还可以将键值集合类型的数据输出,如下:

void idkit_log() {
  IDKitLog.map({
    'a': 10,
    'bcd': [10, 20],
    'ca': '日志键值集合'
  });
}

输出样式如下:

log6.png 键值集合数据展开输出,如下:

void idkit_log() {
  IDKitLog.map(
    {
      'a': 10,
      'bcd': [10, 20],
      'ca': '日志键值集合'
    },
    isExpand: true,
  );
}

输出样式如下:

log7.png

5.输出模式

我们还可以修改日志内容的输出模式,如下:

  • 标准模式

    void idkit_log() {
      IDKitLog.map(
        {
          'a': 10,
          'bcd': [10, 20],
          'ca': '日志键值集合'
        },
        isExpand: true,
        option: const LogOption(
          mode: LogMode.normal,
        ),
      );
    }
    

    输出结果如下:

    log8.png

  • 简洁模式

    void idkit_log() {
      IDKitLog.map(
        {
          'a': 10,
          'bcd': [10, 20],
          'ca': '日志键值集合'
        },
        isExpand: true,
        option: const LogOption(
          mode: LogMode.brief,
        ),
      );
    }
    

    输出结果如下:

    log9.png

  • 复杂模式

    void idkit_log() {
      IDKitLog.map(
        {
          'a': 10,
          'bcd': [10, 20],
          'ca': '日志键值集合'
        },
        isExpand: true,
        option: const LogOption(
          mode: LogMode.full,
        ),
      );
    }
    

    输出结果如下:

    log10.png

6. Json 格式输出
void idkit_log() {
  IDKitLog.json({
    'a': 'json1',
    2: 110,
    'c': [1, 2, 3]
  });
}

输出样式如下:

log11.png

还有其他形式进行输出,在此不再介绍。

7. 修改装饰符
void idkit_log() {
  IDKitLog.json(
    {
      'a': 'json1',
      2: 110,
      'c': [1, 2, 3]
    },
    option: const LogOption(
      decorator: '=',
      splitDecorator: '*'
    )
  );
}

输出结果如下:

log12.png

六、 总结

IDKitLog 提供的功能很多以及多种样式可自定义。市面也有很多日志管理,不做评论,适合自己的才是更好的。如果您感觉可以,请留下你的爱心(❤️)。