Android日志系统搭建

3,342 阅读2分钟

背景

 为啥要搭建日志系统?
 1)APP (android & iOS)没有统一的日志上报系统,
 很多问题用户端的问题都没法依赖日志来调查。
 
 我们需要什么样的日志系统?
 1)高性能,频繁IO不影响APP性能。
 2)不丢日志。
 3)压缩率高,加密的日志。
 4)过期日志自动清理。
 5)日志回捞的高可靠。
 6)用户主动上报日志。

XLog vs LogAn

mmap 加密 压缩率(官网) 日志上传
XLog Y Y 83.7% N
LogAn Y Y 87% Y

性能对比:(Honor 9i LLD-AL20 Android 8.0.0)

单条日志长度18,写入10w条。

内存使用(M) CPU 耗时(ms) 增加文件大小 压缩率
XLog 5M 13% 4181 870801 51.62%
LogAn 7M 17% 1580 228637 87.29%

单条日志长度1177,写入10w条。

内存使用(M) CPU 耗时(ms) 增加文件大小 压缩率
XLog 10M 13% 7840 2049293 98.25%
LogAn 13M 20% 2094 358676 99.69%
 从上面的对比可以发现:
 1)LogAn的CPU & 内存使用会稍高些。
 2)LogAn耗时明显低于XLog。
 3)LogAn增加的文件大小也比XLog小。
 4)LogAn压缩率明显高于XLog。

LogAn 日志协议:

日志解密

 XLog:
 python decode_mars_nocrypt_log_file.py xxx.log 

回捞方案

 1)触发日志上传有四个入口,Push /Config/教师端-触发/设置页面主动上报
 2)App 内部维护一个boolean shouldUploadLog 来决定是否上传日志。
 3)需要上传日志则触发UpLoadLogIntentService 来压缩日志文件到zip包中,然后upload。

 Push - 消息透传 & 通知栏推送
 Config - userId
 教师端-触发SIO

CommonParam

字段 描述
source 来源(android/iOS/web)
deviceId 设备号id
userId 用户id
roomId 房间id
systemVersion 系统版本
deviceType 设备型号
agoraVersion 声网版本
appVersion App版本