总的来说logan还是个半成品的开源项目,可能美团官方使用的已经是个成品了,但是后台没有开源,所以我们目前只能用他们的前段开源项目来达到本地日志管理的功能;
然后在官网的介绍文章里说了很多高大上的东西,其实说白了最核心的是C语言编写,文件加密,其他说的很多可能是美团内部使用的功能和机制,但并没有开放出来
从目前的sdk来看,只具备几个功能,日志本地存储框架,日志加密,那些日志回捞啥的都没有,就是需要我们自己在程序中实现
卡顿,影响性能(c语言编写)
日志丢失(应该是指因为用c语言编写,底层日志,所以不容易丢失,但是查看issues,如果超出文件大小限制,依旧会丢失追加的日志,https://github.com/Meituan-Dianping/Logan/issues/53)
安全性(aes加密)
日志分散(就是有了统一的规则,所有开发者都用这个框架去进行记录,自然就不分散了,另外日志有类型,在sdk方法中,没有筛选的方法)
下面列举下安卓端sdk可以使用的几个api大概就知道目前的SDK有多简洁了
//开启debug模式
Logan.setDebug(true);
.setDebug(true);
//记录日志
Logan.w("test logan", 1);
.w("test logan", 1);
//将日志从缓存冲刷到物理文件上
Logan.f();
.f();
//上传日志
Logan.s(new String[]{"2019-02-13"}, new SendLogRunnable() {
.s(new String[]{"2019-02-13"}, new SendLogRunnable() {
@Override
@Override
public void sendLog(File logFile) {
public void sendLog(File logFile) {
//在这里编写代码上传到我们自己的服务器上
//在这里编写代码上传到我们自己的服务器上
}
});
关于日志回捞功能,文章说是由推送sdk发起回捞指令,然后logan收到进行上传,这应该是通过后台平台一个按钮来触发,目前后台没有开源,所以这一个功能也是没有的,需要我们自己实现,当然,文章已经给出了思路,至于文章说的logan根据网络类型和日志大小上线选择来节省流量,目前的sdk是通过回调给了我们一个File,需要我们自己来做上传的逻辑,所以也是没有这个功能
关于主动上报功能,可以看到sdk仅仅提供了s方法,也就是说主动上报的触发机制需要根据我们自己app的要求,然后主动调用s方法然后进行上传
使用向导
https://github.com/Meituan-Dianping/Logan/blob/master/README-zh.md
其中Logan.s的第一个参数是日期的字符串数组,每个元素的格式为"yyyy-MM-dd"
这里其实很奇怪,不知道为什么要传数组,我本来以为是{"yyyy","MM","dd"}的形式,实际是{"yyyy-MM-dd"}
第二个参数是一个抽象类的实例,实现sendlog方法,方式参数是经过处理后的日志文件,然后需要我们自己编写上传代码,自己搭建服务器,进行上传
按照官方代码,然后导出并解析日志文件
```
{"c":"clogan header","f":1,"l":1550048816507,"n":"clogan","i":1,"m":true}
{"c":"test logan","f":1,"l":1550048816497,"n":"main","i":2,"m":true}
```
下面记录一下每个key的含义
https://github.com/Meituan-Dianping/Logan/wiki/Log-protocol
key | type | description |
---|---|---|
c | string | 日志内容 |
f | int | 日志类型 |
l | long | 时间戳 |
n | string | 线程名称 |
i | int | 线程id |
m | bool | 是不是主线程 |