Flutter 打印日志封装及创建Live Templates快捷打印日志
只需要输入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快捷打印日志的更多相关文章
- 封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil
封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil,代码比较简单,主要是把MongoTarget的配置.FileTarget的配置集成到类中,同时利用缓存依赖来判断是否需要重新创 ...
- java 日志脱敏框架 sensitive,优雅的打印脱敏日志
问题 为了保证用户的信息安全,敏感信息需要脱敏. 项目开发过程中,每次处理敏感信息的日志问题感觉很麻烦,大部分都是用工具类单独处理,不利于以后统一管理,很不优雅. 于是,就写了一个基于 java 注解 ...
- 封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil,nloglogutil
封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil,代码比较简单,主要是把MongoTarget的配置.FileTarget的配置集成到类中,同时利用缓存依赖来判断是否需要重新创 ...
- 修复日志,阻止给日志多次添加handlers时候重复打印的问题
1.解决如果多次添加handlers重复打印的问题.在__add_handlers方法中作出判断. 2.由get_logger_and_add_handlers和get_logger_without_ ...
- python 中logging的日志封装
因为最近在做平台,发现有同事,使用django封装了日志模块,看样子很简单,准备自己单独做了一个日志封装模板,对于python不熟练的我,封装部分参考了多个博主的内容,形成自己的日志模块,内容如下: ...
- Go/Python/Erlang编程语言对比分析及示例 基于RabbitMQ.Client组件实现RabbitMQ可复用的 ConnectionPool(连接池) 封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil 分享基于MemoryCache(内存缓存)的缓存工具类,C# B/S 、C/S项目均可以使用!
Go/Python/Erlang编程语言对比分析及示例 本文主要是介绍Go,从语言对比分析的角度切入.之所以选择与Python.Erlang对比,是因为做为高级语言,它们语言特性上有较大的相似性, ...
- Altium 中异形焊盘异形封装的创建图文教程
Altium 中异形焊盘异形封装的创建图文教程 一般不规则的焊盘被称为异型焊盘,典型的有金手指.大型的器件焊盘或者板子上需要添加特殊形状的铜箔(可以制作一个特殊封装代替). 如图27所示,此处我们以一 ...
- python 日志的配置,python对日志封装成类,日志的调用
# python 日志的配置,python对日志封装成类,日志的调用 import logging # 使用logging模块: class CLog: # --------------------- ...
- logback日志项目使用方法 - 150205交易模块添加日志信息logback,orderNo订单号为log主键便于跟踪,数字常量化,解决取消支付BUG,弱网络环境原因
1.项目里面的日志,便于跟踪数据的变更和异常错误信息产生.生产环境的日志级别是INFO,测试环境日志级别DEBUG,如果生产环境的日志级别是DEBUG,虽然方便查询问题,可以看到SQL语句等信息,但是 ...
随机推荐
- 变量 Java day 5
Java 第五天的学习 变量 变量注意事项 变量的底层 ASCII编码表 1.什么是变量? 概念:变量及代数. 在Java中,变量分为两种:基本类型的变量和引用类型的变量 1>基本类型的变量:必 ...
- uoj310. 【UNR #2】黎明前的巧克力
题目描述: uoj 题解: WTF. 看题解看了一个小时才看明白. 首先有状态$f[i][j]$表示前$i$个东西两人取,最后两人异或和为$j$的有多少方案. 转移为$f[i][j]=f[i-1][j ...
- spring-boot-learning-Web开发知识
1).创建SpringBoot应用,选中我们需要的模块: 2).SpringBoot已经默认将这些场景配置好了,只需要在配置文件中指定少量配置就可以运行起来 3).自己编写业务代码: 文件名的功能 x ...
- 客户端回调 Watcher ?
客户端 SendThread 线程接收事件通知,交由 EventThread 线程回调 Watcher. 客户端的 Watcher 机制同样是一次性的,一旦被触发后,该 Watcher 就失效了.
- Java 中的 TreeMap 是采用什么树实现的?
Java 中的 TreeMap 是使用红黑树实现的.
- js里面是没有Trim()这个方法的可以用以下的形式来判断是否输入的值为空
if (text.value.replace(/\s+/g, "").length == 0)
- Streamlit:快速数据可视化界面工具
目录 Streamlit简介 Streamlit使用指南 常用命令 显示文本 显示数据 显示图表 显示媒体 交互组件 侧边栏 缓存机制 Streamlit使用Hack Streamlit的替代品 相关 ...
- (stm32学习总结)—SPI-FLASH 实验
SPI总线 SPI 简介 SPI 的全称是"Serial Peripheral Interface",意为串行外围接口,是Motorola 首先在其 MC68HCXX 系列处理器上 ...
- html5知识点补充—footer元素的使用
使用footer元素创建脚注 顾名思义,footer元素通常位于页面的底部.尽管footer通常位于某个区域或者页面的底部,但并非总是如此.footer元素旨在包含作者.网站所有者.版权数据.网站规章 ...
- 用Canvas画一棵二叉树
笔墨伺候 var canvas = document.getElementById('canvas'); var ctx = canvas.getContext('2d'); // 然后便可以挥毫泼墨 ...
