简介
Flutter自带的print(), debugPrint()基本够用。
当然,如果需要更多的功能,就需要使用第三方插件。
自己写不合适。
选择第三方插件
在pub.dev网站输入关键字“logger”,进行搜索,一般选择最受欢迎的一个就好了。
企业微信截图_668717db-1fee-4d28-a3ff-09a87c1fe9fa.png很明显,排名第一的优势明显。如果没有特殊原因,就选这个了。
安装插件
-
链接:
logger -
安装命令
flutter pub add logger
文件位置
写log算是工具的一种,所以放在core/utils下面
企业微信截图_4b3c40d8-cb52-4ccf-8e0f-ee268322c19a.png封装
-
就做一层封装,放在一个类中
-
做成静态变量,静态函数,方便调用
-
log的分级,做成一个枚举,提供一个默认参数就行
-
模仿系统的print函数,所以进一步封装成全局函数。(这个特殊,大多数时候静态函数已经可以了)
import 'package:logger/logger.dart';
class LoggerUtil {
static final Logger logger = Logger(
printer: PrettyPrinter(
methodCount: 1,
colors: true,
printTime: true,
),
);
/// 写log
static void loggerWithType(
dynamic message, {
LoggerType type = LoggerType.debug,
}) {
switch (type) {
case LoggerType.verbose:
logger.v(message);
break;
case LoggerType.debug:
logger.d(message);
break;
case LoggerType.info:
logger.i(message);
break;
case LoggerType.warning:
logger.w(message);
break;
case LoggerType.error:
logger.e(message);
break;
case LoggerType.terrible:
logger.wtf(message);
break;
default:
logger.d(message);
}
}
}
/// logger 类型
enum LoggerType {
verbose,
debug,
info,
warning,
error,
terrible,
}
/// 模仿print,给出一个全局函数,方便调用
void log(
dynamic message, {
LoggerType type = LoggerType.info,
}) {
LoggerUtil.loggerWithType(message, type: type);
}
使用
- 直接log全局函数调用就行,参数是dynamic的,随便往里塞就好,比print还方便。
/// 具体的初始化方法
Future<StorageService> _init() async {
if (!isInitFinished) {
log('StorageService start');
_spInstance = await SharedPreferences.getInstance();
isInitFinished = true;
log('StorageService end');
}
return this;
}
- 把log用字符图形圈起来,清晰很多,还是不错的。
问题:Color不起作用
企业微信截图_3d05e074-3b3c-4dd6-af8b-f2d041890587.png既然显示不了颜色,那么就不显示颜色就好了。
小结
-
直接用系统提供的debugPrint其实也差不多了。
-
想log清晰一点,用这个插件还是不错的
-
要创建对象,再使用就显得麻烦了,稍微封装一下,使用起来跟系统差不多。
网友评论