flutter log4d 日志包的使用
文章目录
最近闲来无事,撸了一个日志插件,功能很简单
在开发机上开启一个服务端
然后客户端(不仅是 flutter,而是只要可以使用dart:io
就可以)开启远程连接,然后就可以发送日志到服务端了
好处
这样的好处是,开发机可以实时接收到日志,并且保存到文件中
因为我们很多时候会发生日志超出一个长度(好像是 1000 个),然后在 console 中不能完整显示的问题,比如网络网文请求,如果响应的报文不完整就不能复制出完整的 json,有的错误不太好定位
使用这个插件后,就可以在开发机简单的通过命令保存日志,方便后续定位
只要你的客户端可以访问到服务端,这就能实现
开发过程
使用WebSocket
连接,这个类在 dart 中依托于dart:io
包,所以如果你是dart web
,可能就用不了这个了,flutter
和dart vm
中是没问题的
这个库支持使用 pub global, 配置 dart 和 pub 到环境变量后可以直接通过log4d
在命令行中开启
安装
1. 安装
参考上的 install 标签
pub global activate log4d
这一步完成后可以通过log4d
,log4d_client
来使用插件
2.客户端安装
作为一个库来使用, 首先在 pubspec.yaml 中加入依赖
1dependencies:
2 log4d: ^1.0.3 # 这一步参考最新版
3.获取库
pub get
或 flutter packages get
4. 导入
import 'package:log4d/log4d.dart';
使用
简单的使用方式就是服务端在命令行中开启
1. 开启服务端
log4d -o build/test.log
这样就成功开启了,并且会在接受到日志后将日志保存到指定的目录下
2. 在 flutter 中使用
封装一个简单的帮助类
1import 'dart:async';
2
3import 'package:log4d/log4d.dart';
4
5class LogHelper {
6 Log4dClient _client;
7
8 bool isLog = true;
9
10 bool isRemote = true;
11
12 LogHelper._() {
13 _client = Log4dClient();
14 }
15
16 Future connectRemote() async {
17 await _client.connect();
18 }
19
20 static LogHelper _instance;
21
22 factory LogHelper() {
23 _instance ??= LogHelper._();
24 return _instance;
25 }
26
27 void info(String msg) {
28 if (isLog) print(msg);
29
30 if (isLog && isRemote) {
31 _client.sendEntity(
32 LogEntity()
33 ..level = Level.info
34 ..msg = msg,
35 );
36 }
37 }
38}
3. 在 main 方法中初始化帮助类
1var log = LogHelper();
2void main() async {
3 await log.connectRemote();
4
5 log.info("你好");
6 runApp(MyApp());
7}
后续只需要调用log.info('msg');
就可以将日志发送到开发端
控制台会有日志显示,还会实时写入文件
关于插件
本身只是为了临时调试开发的插件,所以不支持太多的定制化选项,时间也只记录时分秒,不包含日期
如果真的有别的需求,欢迎在项目的 issue 中提交 不保证开发 😉
后记
本篇主要使用了 pub global 的功能作为命令行,如果有什么命令行的小脚本,又对于 python/shell/node 不太熟悉,完全可以使用 dart 进行开发