0
点赞
收藏
分享

微信扫一扫

集成微信高性能日志组件xLog


什么是xLog

2017年12月份,微信官方开源了底层通信库mars。其中xLog是该库中的高性能日志模块,具有如下特性:


  • 高性能高压缩率
  • 不丢失任何一行日志
  • 避免系统卡顿
  • 避免CPU波峰
  • 支持数据加密

集成Xlog步骤

本人基于官方demo做了接口抽象,简化了调用。demo及依赖库在:

https://github.com/cxyzy1/mars_xlog_demo.git


  1. 初始化
    ​FileLog.init(context, "")​
  2. 写日志
    ​FileLog.d("tag", "write log.")​​ 写日志可用函数列表:


  • v:verbose级别(默认此级别不打印,如果需要打印,则需要调用setLevel,设置level为0)
  • d:debug级别
  • i:info级别
  • w:warning级别
  • e:error级别
  • f:fatal级别


  1. 获取日志文件:
    获取日志文件列表:​​FileLog.retrieveLogFiles()​​ 获取打包到一个zip文件的日志:​​FileLog.retrieveLogFilesAsZip()​
  2. 为保证缓存内容再应用退出时写入了日志文件,建议退出前调用:
    ​FileLog.appenderClose()​
  3. 日志打印是可以分级的,调用setLevel即可设置,可用level值如下:


  • 0:输出所有日志
  • 1:输出debug日志及以上
  • 2:输出info日志及以上
  • 3:输出warning日志及以上
  • 4:输出error日志及以上
  • 5:输出fatal日志及以上
  • 6:不输出任何日志

  1. 混淆设置
    proguard文件中添加​​​-keep class com.tencent.mars.xlog.** { *; }​

解码xlog日志文件(分两种情况)


  • 先下载python 2.7(本文档写作使用的2.7.15 x86版本,非x86_64版本)
    2.7.15 x86版本下载地址:https://www.python.org/ftp/python/2.7.15/python-2.7.15.msi
  • 把log文件从手机里导出至Mars源码log/crypt/文件夹下,在命令行切换到该目录下。
    导出文件命令样例:

adb pull /sdcard/mars/log_copy/FileLog_20181109.xlog "E:\mars\log\crypt"

  • 文件未做加密
    执行:​​python decode_mars_nocrypt_log_file.py​
  • 文件做了加密(初始化时pubKey传入了值,值需要和decode_mars_crypt_log_file.py中PUB_KEY值相同)
    执行:​​python decode_mars_crypt_log_file.py​​ 注意对于加密场景,执行上面命令前,需要安装pyelliptic,命令为:​​pip install pyelliptic==1.5.7​​。pip命令在C:\Python27\Scripts\目录下。
    当前目录下就会生成解码后的FileLog_20181109.xlog.log

xlog和普通日志记录方式测试结果对比


  • 测试设备:华为 P10 Plus
  • 测试方法:每次循环十万次写入同样信息到日志文件,对于普通日志的写入方法采用了如下代码(Kotlin):

fun appendContent(filePath: String, content: String) {
val f = File(filePath)
if (!f.exists()) {
f.createNewFile()
}
f.appendText(content, charset)
}
  • 测试数据对比
    集成微信高性能日志组件xLog_python

集成微信高性能日志组件xLog_日志文件_02



举报

相关推荐

0 条评论