有过嵌入式开发经验的都知道日志的存储是个比较麻烦的问题。之前ARM开源了一款项目:cmbacktrace,github地址就不贴了,可以将crash时的堆栈信息进行保存。但是对于手机app来说,光保存程序崩溃时的日志信息时远远不够的,根本无法定位到具体原因。在讲解淘系使用的日志系统之前,先看一下最通用的日志系统。
通用方案一
主流的日志模块比如logback,是属于实时日志记录系统,也就是每产生一句日志就进行加密存入磁盘文件。这样有个缺点就是I/O过于密集占用大量CPU资源,影响程序性能,极易卡顿。一般使用与app开发调试阶段,正式发版肯定要把log功能关闭,等用户产生程序崩溃等反应问题时,才重新打一个调试包进行复现。但是很多时候场景不完全相同,很难复现问题。前文有讲过cache数据与磁盘数据之间的关系:
进程是如何使用内存的?mp.weixin.qq.com程序写文件操作的时候,并不是直接操作磁盘里的文件,而是先把数据写入系统缓存,也就是脏页中,然后操作系统