只需要输入logi 就可出现以下代码

/// tag(类名.函数名)
LogUtil.i(index, tag: '_MyHomePageState.onItemClick:'); 打印日志效果如下:

实现上面效果步骤如下:

一、封装log_util.dart

  1 ///
2 /// Log工具类:打印日志相关
3 ///
4 /// @author zony
5 /// @time 2022/4/7 14:49
6 class LogUtil {
7 /// 默认日志TAG
8 static const String _TAG_DEF = "LogUtil: ";
9
10 /// 是否打开输出日志,true:log输出
11 static bool isOpenLogDef = true;
12
13 /// 日志TAG
14 static String TAG = _TAG_DEF;
15
16 /// 运行在Release环境时,inProduction为true;
17 /// 当App运行在Debug和Profile环境时,inProduction为false。
18 static const bool inProduction = bool.fromEnvironment("dart.vm.product");
19
20 ///
21 /// 初始化log
22 ///
23 /// [isOpenLog] 是否打开日志
24 /// [tag] tag标识
25 /// @author zony
26 /// @time 2022/4/7 14:45
27 static void init({bool isOpenLog = false, String tag = _TAG_DEF}) {
28 isOpenLogDef = isOpenLog;
29 TAG = tag;
30 }
31
32 ///
33 /// 打印INFO日志
34 ///
35 /// [object] 打印object内容
36 /// [tag] tag标识
37 /// @author zony
38 /// @time 2022/4/7 14:47
39 static void i(Object object, {String tag = _TAG_DEF}) {
40 _printLog(tag, '[I]', object);
41 }
42
43 ///
44 /// 打印警告日志
45 ///
46 /// [object] 打印object内容
47 /// [tag] tag标识
48 /// @author zony
49 /// @time 2022/4/7 14:47
50 static void w(Object object, {String tag = _TAG_DEF}) {
51 _printLog(tag, '[W]️', object);
52 }
53
54 ///
55 /// 打印错误日志
56 ///
57 /// [object] 打印object内容
58 /// [tag] tag标识
59 /// @author zony
60 /// @time 2022/4/7 14:47
61 static void e(Object object, {String tag = _TAG_DEF}) {
62 _printLog(tag, '[E]', object);
63 }
64
65 ///
66 /// 打印debug日志
67 ///
68 /// [object] 打印object内容
69 /// [tag] tag标识
70 /// @author zony
71 /// @time 2022/4/7 14:47
72 static void d(Object object, {String tag = _TAG_DEF}) {
73 _printLog(tag, "[D]", object);
74 }
75
76 ///
77 /// 输出日志
78 ///
79 /// [tag] tag标识
80 /// [stag] stag标识,比如e、i、v等
81 /// [object] 输出object内容
82 /// @author zony
83 /// @time 2022/4/7 14:48
84 static void _printLog(String tag, String stag, Object object) {
85 if (!isOpenLogDef || inProduction) {
86 print('LogUtil._printLog Log returen! [because isOpenLog: ' +
87 isOpenLogDef.toString() +
88 ', TAG: ' +
89 TAG +
90 ', inProduction: ' +
91 inProduction.toString()+']');
92 return;
93 }
94 StringBuffer stringBuffer = StringBuffer();
95 stringBuffer.writeln(
96 '┌-----------------------------------------------------------------------------------------');
97 stringBuffer.write('│-> ');
98 stringBuffer.write(stag);
99 stringBuffer.write(" ");
100 stringBuffer.write((tag == null || tag.isEmpty) ? TAG : tag);
101 stringBuffer.write(": ");
102 stringBuffer.write(object);
103 print(stringBuffer.toString());
104 print(
105 '└-----------------------------------------------------------------------------------------');
106 }
107 }

二、创建Live Templates

1、File->Setting->Editor->Live Templates

2、点击最右边+,创建一个Template Group  

3、填写group名,任意填写

4、选中你刚刚创建的group,创建Live Template

5、填写Abbreviation,方便输入和记忆可输入logi,即这个日志输出的快捷方式,在输出日志的地方logi加回车即可

6、上图5编辑界面及value如下图

Flutter 打印日志封装及创建Live Templates快捷打印日志的更多相关文章

  1. 封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil

    封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil,代码比较简单,主要是把MongoTarget的配置.FileTarget的配置集成到类中,同时利用缓存依赖来判断是否需要重新创 ...

  2. java 日志脱敏框架 sensitive,优雅的打印脱敏日志

    问题 为了保证用户的信息安全,敏感信息需要脱敏. 项目开发过程中,每次处理敏感信息的日志问题感觉很麻烦,大部分都是用工具类单独处理,不利于以后统一管理,很不优雅. 于是,就写了一个基于 java 注解 ...

  3. 封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil,nloglogutil

    封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil,代码比较简单,主要是把MongoTarget的配置.FileTarget的配置集成到类中,同时利用缓存依赖来判断是否需要重新创 ...

  4. 修复日志,阻止给日志多次添加handlers时候重复打印的问题

    1.解决如果多次添加handlers重复打印的问题.在__add_handlers方法中作出判断. 2.由get_logger_and_add_handlers和get_logger_without_ ...

  5. python 中logging的日志封装

    因为最近在做平台,发现有同事,使用django封装了日志模块,看样子很简单,准备自己单独做了一个日志封装模板,对于python不熟练的我,封装部分参考了多个博主的内容,形成自己的日志模块,内容如下: ...

  6. Go/Python/Erlang编程语言对比分析及示例 基于RabbitMQ.Client组件实现RabbitMQ可复用的 ConnectionPool(连接池) 封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil 分享基于MemoryCache(内存缓存)的缓存工具类,C# B/S 、C/S项目均可以使用!

    Go/Python/Erlang编程语言对比分析及示例   本文主要是介绍Go,从语言对比分析的角度切入.之所以选择与Python.Erlang对比,是因为做为高级语言,它们语言特性上有较大的相似性, ...

  7. Altium 中异形焊盘异形封装的创建图文教程

    Altium 中异形焊盘异形封装的创建图文教程 一般不规则的焊盘被称为异型焊盘,典型的有金手指.大型的器件焊盘或者板子上需要添加特殊形状的铜箔(可以制作一个特殊封装代替). 如图27所示,此处我们以一 ...

  8. python 日志的配置,python对日志封装成类,日志的调用

    # python 日志的配置,python对日志封装成类,日志的调用 import logging # 使用logging模块: class CLog: # --------------------- ...

  9. logback日志项目使用方法 - 150205交易模块添加日志信息logback,orderNo订单号为log主键便于跟踪,数字常量化,解决取消支付BUG,弱网络环境原因

    1.项目里面的日志,便于跟踪数据的变更和异常错误信息产生.生产环境的日志级别是INFO,测试环境日志级别DEBUG,如果生产环境的日志级别是DEBUG,虽然方便查询问题,可以看到SQL语句等信息,但是 ...

随机推荐

  1. java 实现装饰器设计模式

    package com.gylhaut.base; /** * 装饰器 * 类与类之间的关系 * 1.依赖:形参(局部变量) * 2.关联:属性 * 聚合 属性 整体和部分 不一致的生命周期 人和手 ...

  2. c++-投骰子

    #include<iostream>#include<cstdlib>//产生随机数的函数using namespace std;enum GameStatus{WIN,LOS ...

  3. Cobalt Strike之网站克隆

    点击 attack --> Web-dirve-by --> clone file 填写你要克隆的网站.带有端口 Clone URL:克隆目标网站的URL 注意问题:URL需要添加http ...

  4. ubuntu忘记密码,用root修改Ubuntu密码

    今天突发奇想,想改一下ubuntu的用户名,仅仅修改了/etc/passwd中的用户名. 改完后没有用命令修改密码,直接reboot了. 结果悲剧了,登不进去了. 赶紧百度一下,结果发现,本宝宝看不懂 ...

  5. MindSpore尝鲜之Vmap功能

    技术背景 Vmap是一种在python里面经常提到的向量化运算的功能,比如之前大家常用的就是numba和jax中的向量化运算的接口.虽然numpy中也使用到了向量化的运算,比如计算两个numpy数组的 ...

  6. Python中将字典转为成员变量

    技术背景 当我们在Python中写一个class时,如果有一部分的成员变量需要用一个字典来命名和赋值,此时应该如何操作呢?这个场景最常见于从一个文件(比如json.npz之类的文件)中读取字典变量到内 ...

  7. short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1;有错吗?

    对于short s1 = 1; s1 = s1 + 1;由于1是int类型,因此s1+1运算结果也是int 型,需要强制转换类型才能赋值给short型.而short s1 = 1; s1 += 1;可 ...

  8. 一个 Spring Bean 定义 包含什么?

    一个Spring Bean 的定义包含容器必知的所有配置元数据,包括如何创建一个bean,它的生命周期详情及它的依赖.

  9. 什么是基于 Java 的 Spring 注解配置?

    基于 Java 的配置,允许你在少量的 Java 注解的帮助下,进行你的大部分 Spring 配置而非通过 XML 文件. 以@Configuration 注解为例,它用来标记类可以当做一个 bean ...

  10. Thymeleaf+Spring使用自己的工具类

    第一种.提供思路,继承SpringStandardDialect,重写getExpressionObjectFactory方法,设置expressionObjectFactory的实际对象,并在Tem ...