只需要输入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. calcite物化视图详解

    概述 物化视图和视图类似,反映的是某个查询的结果,但是和视图仅保存SQL定义不同,物化视图本身会存储数据,因此是物化了的视图. 当用户查询的时候,原先创建的物化视图会注册到优化器中,用户的查询命中物化 ...

  2. 使用WebService的优点

    1.支持跨平台,跨语言,远程调用 WSDL:web service definition language 直译 webservice定义语言 对应一种类型的文件.wsdl2.定义了web servi ...

  3. 7月2日 Django注册页面的form组件

    forms.py里注册页面的form组件 # Create your views here. class RegForm(forms.Form): username = forms.CharField ...

  4. [SPDK/NVMe存储技术分析]009 - Introduction to RDMA Send | RDMA Send操作概论

    来源: https://zcopy.wordpress.com/ 说明: 本文不是对原文的逐字逐句翻译,而是摘取核心部分以介绍RDMA Send操作(后面凡是提到RDMA send, 都对应于IBA里 ...

  5. k8s集群Job Pod 容器可能因为多种原因失效,想要更加稳定的使用Job负载,有哪些需要注意的地方?

    k8s集群Job Pod 容器可能因为多种原因失效,想要更加稳定的使用Job负载,有哪些需要注意的地方? 面试官:"计数性Job默认完成模式是什么?Indexed模式如何发布自定义索引呢?& ...

  6. CF1553X Harbour.Space Scholarship Contest 2021-2022 (Div. 1 + Div. 2)

    掉大分 E 对于一个序列,把它排回去的最小次数是 $\sum置换环大小-1=错位个数-置换环个数$ 注意到m小于等于n/3.那么最多修正2m个错位.正确位置的个数必须大于等于n/3才可能在m次内修正. ...

  7. [HNOI2016]序列(莫队,RMQ)

    [HNOI2016]序列(莫队,RMQ) 洛谷  bzoj 一眼看不出来怎么用数据结构维护 然后还没修改 所以考虑莫队 以$(l,r-1) -> (l,r)$为例 对答案的贡献是$\Sigma_ ...

  8. [WPF] 假装可变字体

    1. 可变字体 上图中的两个动画,一个文字直接变粗,一个渐渐变粗,我觉得后者会更有趣.但普通的字体可达不到这种效果,例如微软雅黑,无论怎么调整它的 FontWeight,实际上它也只有三种粗细: 这时 ...

  9. 什么是B+树??

    上一篇中,我们了解了B树,辣么..B+树又是什么呢?? 一:定义:B+树是基于B树的,是B树的变形,也是一种多路搜索树.查询性能更加出色. 1.每个父节点元素出现在子节点中,是子节点的最大或最小元素. ...

  10. 数据库连接Database link?

    在一个用户下,可以获取到另外的用户下的表的数据,通常在跨数据库时使用. create database link link93 connect to scott identified by tiger ...