flutter log4d 日志包的使用

最近闲来无事,撸了一个日志插件,功能很简单

在开发机上开启一个服务端

然后客户端(不仅是 flutter,而是只要可以使用dart:io就可以)开启远程连接,然后就可以发送日志到服务端了

好处

这样的好处是,开发机可以实时接收到日志,并且保存到文件中

因为我们很多时候会发生日志超出一个长度(好像是 1000 个),然后在 console 中不能完整显示的问题,比如网络网文请求,如果响应的报文不完整就不能复制出完整的 json,有的错误不太好定位

使用这个插件后,就可以在开发机简单的通过命令保存日志,方便后续定位

只要你的客户端可以访问到服务端,这就能实现

开发过程

使用WebSocket连接,这个类在 dart 中依托于dart:io包,所以如果你是dart web,可能就用不了这个了,flutterdart vm中是没问题的

这个库支持使用 pub global, 配置 dart 和 pub 到环境变量后可以直接通过./log4d在命令行中开启

安装

  1. 安装
    参考pub上的 install 标签

pub global activate log4d

这一步完成后可以通过log4d,log4d_client 来使用插件

  1. 客户端安装
    作为一个库来使用, 首先在 pubspec.yaml 中加入依赖
dependencies:
  log4d: ^1.0.3 # 这一步参考最新版
  1. 获取库

pub getflutter packages get

  1. 导入

import ‘package:log4d/log4d.dart’;

使用

参考文档

简单的使用方式就是服务端在命令行中开启

  1. 开启服务端

log4d -o build/test.log

这样就成功开启了,并且会在接受到日志后将日志保存到指定的目录下

  1. 在 flutter 中使用

封装一个简单的帮助类

import 'dart:async';

import 'package:log4d/log4d.dart';

class LogHelper {
  Log4dClient _client;

  bool isLog = true;

  bool isRemote = true;

  LogHelper._() {
    _client = Log4dClient();
  }

  Future connectRemote() async {
    await _client.connect();
  }

  static LogHelper _instance;

  factory LogHelper() {
    _instance ??= LogHelper._();
    return _instance;
  }

  void info(String msg) {
    if (isLog) print(msg);

    if (isLog && isRemote) {
      _client.sendEntity(
        LogEntity()
          ..level = Level.info
          ..msg = msg,
      );
    }
  }
}
  1. 在 main 方法中初始化帮助类
var log = LogHelper();
void main() async {
  await log.connectRemote();

  log.info("你好");
  runApp(MyApp());
}

后续只需要调用log.info('msg');就可以将日志发送到开发端

控制台会有日志显示,还会实时写入文件

关于插件

本身只是为了临时调试开发的插件,所以不支持太多的定制化选项,时间也只记录时分秒,不包含日期

如果真的有别的需求,欢迎在项目的 issue 中提交 不保证开发 ?

后记

本篇主要使用了 pub global 的功能作为命令行,如果有什么命令行的小脚本,又对于 python/shell/node 不太熟悉,完全可以使用 dart 进行开发

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值