经过前两篇文章
Android 微信高性能日志存储库Xlog的使用
Android Mars XLog的编译
我们大概了解了XLog,但是微信开源的XLog日志库,格式是写死的,如下图所示
那我们如果需要实现自定义的格式存储日志,该怎么办呢 ?
通过源码,我们可以发现,mars\log\src\appender.cc
文件中的appender_open
方法,会拼接下面这部分信息
^^^^^^^^^^Feb 18 2020^^^10:19:18^^^^^^^^^^[24414,24414][2020-02-18 +0800 10:22:45]
get mmap time: 0
MARS_URL:
MARS_PATH:
MARS_REVISION:
MARS_BUILD_TIME: 2020-02-18 10:19:10
MARS_BUILD_JOB:
log appender mode:0, use mmap:1
cache dir space info, capacity:113652264960 free:57627987968 available:57074339840
log dir space info, capacity:113652264960 free:57627987968 available:57074339840
来看下源码,其中snprintf
是C语言中拼接格式化字符串的一个函数。
然后,mars\log\src\formater.cc
文件的log_formater
方法中,会拼接每一行的前缀
所以,我们只要让代码不执行这两个地方,保存的日志就不会打印这些内容了。
我们来修改下
然后,再进行编译 (编译配置详见Android Mars XLog的编译)。
可以看到生成了如下的so文件
然后把生成的so覆盖原来项目中的so,运行项目后存储日志就如下所示了。
即保存的日志格式可以完全自定了 !
更偷懒的做法
如果你嫌编译太麻烦,也可以用我已经编译好的so文件,覆盖到你的项目中,即可。
附上重新编译后的so下载 (对应Xlog版本 v1.2.3)